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

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

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

revision 1.13 by jmc, Thu Aug 7 17:32:03 2014 UTC revision 1.18 by jmc, Fri Sep 5 21:07:14 2014 UTC
# Line 116  C     fZon       :: Flux of temperature Line 116  C     fZon       :: Flux of temperature
116  C     fMer       :: Flux of temperature (T) in the meridional direction  C     fMer       :: Flux of temperature (T) in the meridional direction
117  C     fVer       :: Flux of temperature (T) in the vertical direction  C     fVer       :: Flux of temperature (T) in the vertical direction
118  C                   at the upper(U) and lower(D) faces of a cell.  C                   at the upper(U) and lower(D) faces of a cell.
119    C     gT_loc     :: Temperature tendency (local to this S/R)
120  C     gtForc     :: Temperature forcing tendency  C     gtForc     :: Temperature forcing tendency
121  C     gt_AB      :: Adams-Bashforth temperature tendency increment  C     gt_AB      :: Adams-Bashforth temperature tendency increment
122  C   useVariableK :: T when vertical diffusion is not constant  C   useVariableK :: T when vertical diffusion is not constant
# Line 132  C   useVariableK :: T when vertical diff Line 133  C   useVariableK :: T when vertical diff
133        _RL fZon    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL fZon    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
134        _RL fMer    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL fMer    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
135        _RL fVer    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)        _RL fVer    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
136          _RL gT_loc  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
137        _RL gtForc  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL gtForc  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
138        _RL gt_AB   (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL gt_AB   (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
139  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
# Line 148  C   useVariableK :: T when vertical diff Line 150  C   useVariableK :: T when vertical diff
150    
151  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
152    
 C-    Loop ranges for daughter routines  
       iMin = 1-OLx+2  
       iMax = sNx+OLx-1  
       jMin = 1-OLy+2  
       jMax = sNy+OLy-1  
   
153        iterNb = myIter        iterNb = myIter
154        IF (staggerTimeStep) iterNb = myIter - 1        IF (staggerTimeStep) iterNb = myIter - 1
155    
156    C-    Loop ranges for daughter routines:
157    c     iMin = 1
158    c     iMax = sNx
159    c     jMin = 1
160    c     jMax = sNy
161    C     Regarding model dynamics, only needs to get correct tracer tendency
162    C     (gT_loc) in tile interior (1:sNx,1:sNy);
163    C     However, for some diagnostics, we may want to get valid tendency
164    C     extended over 1 point in tile halo region (0:sNx+1,0:sNy=1).
165          iMin = 0
166          iMax = sNx+1
167          jMin = 0
168          jMax = sNy+1
169    
170  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
171        diagForcing = .FALSE.        diagForcing = .FALSE.
172        diagAB_tend = .FALSE.        diagAB_tend = .FALSE.
# Line 179  C-    Loop ranges for daughter routines Line 189  C-    Loop ranges for daughter routines
189       &                      + act4*max1*max2*max3       &                      + act4*max1*max2*max3
190  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
191    
192    C-    Apply AB on T :
193          IF ( AdamsBashforth_T ) THEN
194    C     compute T^n+1/2 (stored in gtNm) extrapolating T forward in time
195    #ifdef ALLOW_ADAMSBASHFORTH_3
196    c         m1 = 1 + MOD(iterNb+1,2)
197    c         m2 = 1 + MOD( iterNb ,2)
198              CALL ADAMS_BASHFORTH3(
199         I                           bi, bj, 0, Nr,
200         I                           theta(1-OLx,1-OLy,1,bi,bj),
201         U                           gtNm, gt_AB,
202         I                           tempStartAB, iterNb, myThid )
203    #else /* ALLOW_ADAMSBASHFORTH_3 */
204              CALL ADAMS_BASHFORTH2(
205         I                           bi, bj, 0, Nr,
206         I                           theta(1-OLx,1-OLy,1,bi,bj),
207         U                           gtNm1(1-OLx,1-OLy,1,bi,bj), gt_AB,
208         I                           tempStartAB, iterNb, myThid )
209    #endif /* ALLOW_ADAMSBASHFORTH_3 */
210          ENDIF
211    
212  C-    Tracer tendency needs to be set to zero (moved here from gad_calc_rhs):  C-    Tracer tendency needs to be set to zero (moved here from gad_calc_rhs):
213        DO k=1,Nr        DO k=1,Nr
214         DO j=1-OLy,sNy+OLy         DO j=1-OLy,sNy+OLy
215          DO i=1-OLx,sNx+OLx          DO i=1-OLx,sNx+OLx
216           gT(i,j,k,bi,bj) = 0. _d 0           gT_loc(i,j,k) = 0. _d 0
217          ENDDO          ENDDO
218         ENDDO         ENDDO
219        ENDDO        ENDDO
# Line 201  C-    Tracer tendency needs to be set to Line 231  C-    Tracer tendency needs to be set to
231          ENDDO          ENDDO
232         ENDDO         ENDDO
233        ENDDO        ENDDO
234  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj , key=itdkey, byte=isbyte  CADJ STORE wFld(:,:,:)         = comlev1_bibj , key=itdkey, byte=isbyte
235  CADJ STORE wFld(:,:,:) = comlev1_bibj , key=itdkey, byte=isbyte  CADJ STORE theta(:,:,:,bi,bj)  = comlev1_bibj , key=itdkey, byte=isbyte
236    # ifdef ALLOW_ADAMSBASHFORTH_3
237    CADJ STORE gtNm(:,:,:,bi,bj,1) = comlev1_bibj, key=itdkey, byte=isbyte
238    CADJ STORE gtNm(:,:,:,bi,bj,2) = comlev1_bibj, key=itdkey, byte=isbyte
239    # else
240    CADJ STORE gtNm1(:,:,:,bi,bj)  = comlev1_bibj, key=itdkey, byte=isbyte
241    # endif
242  #endif /* ALLOW_AUTODIFF */  #endif /* ALLOW_AUTODIFF */
243    
244  #ifdef INCLUDE_CALC_DIFFUSIVITY_CALL  #ifdef INCLUDE_CALC_DIFFUSIVITY_CALL
# Line 237  CADJ STORE som_T = comlev1_bibj, key=itd Line 273  CADJ STORE som_T = comlev1_bibj, key=itd
273       I             tempAdvScheme, tempVertAdvScheme, GAD_TEMPERATURE,       I             tempAdvScheme, tempVertAdvScheme, GAD_TEMPERATURE,
274       I             dTtracerLev, uFld, vFld, wFld, theta,       I             dTtracerLev, uFld, vFld, wFld, theta,
275       U             som_T,       U             som_T,
276       O             gT,       O             gT_loc,
277       I             bi, bj, myTime, myIter, myThid )       I             bi, bj, myTime, myIter, myThid )
278        ELSEIF (tempMultiDimAdvec) THEN        ELSEIF (tempMultiDimAdvec) THEN
279  #else /* GAD_ALLOW_TS_SOM_ADV */  #else /* GAD_ALLOW_TS_SOM_ADV */
# Line 250  CADJ STORE som_T = comlev1_bibj, key=itd Line 286  CADJ STORE som_T = comlev1_bibj, key=itd
286       I             tempImplVertAdv,       I             tempImplVertAdv,
287       I             tempAdvScheme, tempVertAdvScheme, GAD_TEMPERATURE,       I             tempAdvScheme, tempVertAdvScheme, GAD_TEMPERATURE,
288       I             dTtracerLev, uFld, vFld, wFld, theta,       I             dTtracerLev, uFld, vFld, wFld, theta,
289       O             gT,       O             gT_loc,
290       I             bi, bj, myTime, myIter, myThid )       I             bi, bj, myTime, myIter, myThid )
291        ENDIF        ENDIF
292  #endif /* DISABLE_MULTIDIM_ADVECTION */  #endif /* DISABLE_MULTIDIM_ADVECTION */
# Line 270  C-    Start vertical index (k) loop (Nr: Line 306  C-    Start vertical index (k) loop (Nr:
306  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
307  CADJ STORE fVer(:,:,:) = comlev1_bibj_k, key=kkey,  CADJ STORE fVer(:,:,:) = comlev1_bibj_k, key=kkey,
308  CADJ &     byte=isbyte,  kind = isbyte  CADJ &     byte=isbyte,  kind = isbyte
309  CADJ STORE gT(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey,  CADJ STORE gT_loc(:,:,k) = comlev1_bibj_k, key=kkey,
310  CADJ &     byte=isbyte,  kind = isbyte  CADJ &     byte=isbyte,  kind = isbyte
311  # ifdef ALLOW_ADAMSBASHFORTH_3  # ifdef ALLOW_ADAMSBASHFORTH_3
312  CADJ STORE gtNm(:,:,k,bi,bj,1) = comlev1_bibj_k, key=kkey,  CADJ STORE gtNm(:,:,k,bi,bj,1) = comlev1_bibj_k, key=kkey,
# Line 316  c       m1 = 1 + MOD(iterNb+1,2) Line 352  c       m1 = 1 + MOD(iterNb+1,2)
352       I           vFld(1-OLx,1-OLy,k), wFld(1-OLx,1-OLy,k),       I           vFld(1-OLx,1-OLy,k), wFld(1-OLx,1-OLy,k),
353       I           uTrans, vTrans, rTrans, rTransKp,       I           uTrans, vTrans, rTrans, rTransKp,
354       I           diffKhT, diffK4T, KappaRk(1-OLx,1-OLy,k), diffKr4T,       I           diffKhT, diffK4T, KappaRk(1-OLx,1-OLy,k), diffKr4T,
355       I           theta, gtNm(1-OLx,1-OLy,1,1,1,m2), dTtracerLev,       I           theta(1-OLx,1-OLy,1,bi,bj),
356         I           gtNm(1-OLx,1-OLy,1,bi,bj,m2), dTtracerLev,
357       I           GAD_TEMPERATURE, tempAdvScheme, tempVertAdvScheme,       I           GAD_TEMPERATURE, tempAdvScheme, tempVertAdvScheme,
358       I           calcAdvection, tempImplVertAdv, AdamsBashforth_T,       I           calcAdvection, tempImplVertAdv, AdamsBashforth_T,
359       I           tempVertDiff4, useGMRedi, useKPP,       I           tempVertDiff4, useGMRedi, useKPP,
360       O           fZon, fMer,       O           fZon, fMer,
361       U           fVer, gT,       U           fVer, gT_loc,
362       I           myTime, myIter, myThid )       I           myTime, myIter, myThid )
363  #else /* ALLOW_ADAMSBASHFORTH_3 */  #else /* ALLOW_ADAMSBASHFORTH_3 */
364          CALL GAD_CALC_RHS(          CALL GAD_CALC_RHS(
# Line 330  c       m1 = 1 + MOD(iterNb+1,2) Line 367  c       m1 = 1 + MOD(iterNb+1,2)
367       I           vFld(1-OLx,1-OLy,k), wFld(1-OLx,1-OLy,k),       I           vFld(1-OLx,1-OLy,k), wFld(1-OLx,1-OLy,k),
368       I           uTrans, vTrans, rTrans, rTransKp,       I           uTrans, vTrans, rTrans, rTransKp,
369       I           diffKhT, diffK4T, KappaRk(1-OLx,1-OLy,k), diffKr4T,       I           diffKhT, diffK4T, KappaRk(1-OLx,1-OLy,k), diffKr4T,
370       I           theta, gtNm1, dTtracerLev,       I           theta(1-OLx,1-OLy,1,bi,bj),
371         I           gtNm1(1-OLx,1-OLy,1,bi,bj), dTtracerLev,
372       I           GAD_TEMPERATURE, tempAdvScheme, tempVertAdvScheme,       I           GAD_TEMPERATURE, tempAdvScheme, tempVertAdvScheme,
373       I           calcAdvection, tempImplVertAdv, AdamsBashforth_T,       I           calcAdvection, tempImplVertAdv, AdamsBashforth_T,
374       I           tempVertDiff4, useGMRedi, useKPP,       I           tempVertDiff4, useGMRedi, useKPP,
375       O           fZon, fMer,       O           fZon, fMer,
376       U           fVer, gT,       U           fVer, gT_loc,
377       I           myTime, myIter, myThid )       I           myTime, myIter, myThid )
378  #endif  #endif
379    
# Line 343  C--   External thermal forcing term(s) i Line 381  C--   External thermal forcing term(s) i
381          IF ( tempForcing .AND. tracForcingOutAB.NE.1 ) THEN          IF ( tempForcing .AND. tracForcingOutAB.NE.1 ) THEN
382            DO j=1-OLy,sNy+OLy            DO j=1-OLy,sNy+OLy
383             DO i=1-OLx,sNx+OLx             DO i=1-OLx,sNx+OLx
384              gT(i,j,k,bi,bj) = gT(i,j,k,bi,bj) + gtForc(i,j)              gT_loc(i,j,k) = gT_loc(i,j,k) + gtForc(i,j)
385             ENDDO             ENDDO
386            ENDDO            ENDDO
387          ENDIF          ENDIF
# Line 352  C--   External thermal forcing term(s) i Line 390  C--   External thermal forcing term(s) i
390  #ifdef ALLOW_ADAMSBASHFORTH_3  #ifdef ALLOW_ADAMSBASHFORTH_3
391            CALL ADAMS_BASHFORTH3(            CALL ADAMS_BASHFORTH3(
392       I                          bi, bj, k, Nr,       I                          bi, bj, k, Nr,
393       U                          gT, gtNm, gt_AB,       U                          gT_loc, gtNm,
394         O                          gt_AB,
395       I                          tempStartAB, iterNb, myThid )       I                          tempStartAB, iterNb, myThid )
396  #else  #else
397            CALL ADAMS_BASHFORTH2(            CALL ADAMS_BASHFORTH2(
398       I                          bi, bj, k, Nr,       I                          bi, bj, k, Nr,
399       U                          gT, gtNm1, gt_AB,       U                          gT_loc, gtNm1(1-OLx,1-OLy,1,bi,bj),
400         O                          gt_AB,
401       I                          tempStartAB, iterNb, myThid )       I                          tempStartAB, iterNb, myThid )
402  #endif  #endif
403  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
# Line 371  C--   External thermal forcing term(s) o Line 411  C--   External thermal forcing term(s) o
411          IF ( tempForcing .AND. tracForcingOutAB.EQ.1 ) THEN          IF ( tempForcing .AND. tracForcingOutAB.EQ.1 ) THEN
412            DO j=1-OLy,sNy+OLy            DO j=1-OLy,sNy+OLy
413             DO i=1-OLx,sNx+OLx             DO i=1-OLx,sNx+OLx
414              gT(i,j,k,bi,bj) = gT(i,j,k,bi,bj) + gtForc(i,j)              gT_loc(i,j,k) = gT_loc(i,j,k) + gtForc(i,j)
415             ENDDO             ENDDO
416            ENDDO            ENDDO
417          ENDIF          ENDIF
# Line 380  C--   External thermal forcing term(s) o Line 420  C--   External thermal forcing term(s) o
420          IF (nonlinFreeSurf.GT.0) THEN          IF (nonlinFreeSurf.GT.0) THEN
421            CALL FREESURF_RESCALE_G(            CALL FREESURF_RESCALE_G(
422       I                            bi, bj, k,       I                            bi, bj, k,
423       U                            gT,       U                            gT_loc,
424       I                            myThid )       I                            myThid )
425           IF ( AdamsBashforthGt ) THEN           IF ( AdamsBashforthGt ) THEN
426  #ifdef ALLOW_ADAMSBASHFORTH_3  #ifdef ALLOW_ADAMSBASHFORTH_3
# Line 392  CADJ &     byte=isbyte,  kind = isbyte Line 432  CADJ &     byte=isbyte,  kind = isbyte
432  # endif  # endif
433            CALL FREESURF_RESCALE_G(            CALL FREESURF_RESCALE_G(
434       I                            bi, bj, k,       I                            bi, bj, k,
435       U                            gtNm(1-OLx,1-OLy,1,1,1,1),       U                            gtNm(1-OLx,1-OLy,1,bi,bj,1),
436       I                            myThid )       I                            myThid )
437            CALL FREESURF_RESCALE_G(            CALL FREESURF_RESCALE_G(
438       I                            bi, bj, k,       I                            bi, bj, k,
439       U                            gtNm(1-OLx,1-OLy,1,1,1,2),       U                            gtNm(1-OLx,1-OLy,1,bi,bj,2),
440       I                            myThid )       I                            myThid )
441  #else  #else
442            CALL FREESURF_RESCALE_G(            CALL FREESURF_RESCALE_G(
443       I                            bi, bj, k,       I                            bi, bj, k,
444       U                            gtNm1,       U                            gtNm1(1-OLx,1-OLy,1,bi,bj),
445       I                            myThid )       I                            myThid )
446  #endif  #endif
447           ENDIF           ENDIF
448          ENDIF          ENDIF
449  #endif /* NONLIN_FRSURF */  #endif /* NONLIN_FRSURF */
450    
         CALL TIMESTEP_TRACER(  
      I           bi, bj, k, dTtracerLev(k),  
      I           theta,  
      U           gT,  
      I           myIter, myThid )  
   
451  C-    end of vertical index (k) loop (Nr:1)  C-    end of vertical index (k) loop (Nr:1)
452        ENDDO        ENDDO
453    
# Line 422  C-    end of vertical index (k) loop (Nr Line 456  C-    end of vertical index (k) loop (Nr
456          IF ( usingPCoords ) THEN          IF ( usingPCoords ) THEN
457            CALL DWNSLP_APPLY(            CALL DWNSLP_APPLY(
458       I                  GAD_TEMPERATURE, bi, bj, kSurfC,       I                  GAD_TEMPERATURE, bi, bj, kSurfC,
459       I                  recip_drF, recip_hFac, recip_rA,       I                  theta(1-OLx,1-OLy,1,bi,bj),
460       I                  dTtracerLev,       U                  gT_loc,
461       I                  theta,       I                  recip_hFac, recip_rA, recip_drF,
462       U                  gT,       I                  dTtracerLev, myTime, myIter, myThid )
      I                  myTime, myIter, myThid )  
463          ELSE          ELSE
464            CALL DWNSLP_APPLY(            CALL DWNSLP_APPLY(
465       I                  GAD_TEMPERATURE, bi, bj, kLowC,       I                  GAD_TEMPERATURE, bi, bj, kLowC,
466       I                  recip_drF, recip_hFac, recip_rA,       I                  theta(1-OLx,1-OLy,1,bi,bj),
467       I                  dTtracerLev,       U                  gT_loc,
468       I                  theta,       I                  recip_hFac, recip_rA, recip_drF,
469       U                  gT,       I                  dTtracerLev, myTime, myIter, myThid )
      I                  myTime, myIter, myThid )  
470          ENDIF          ENDIF
471        ENDIF        ENDIF
472  #endif /* ALLOW_DOWN_SLOPE */  #endif /* ALLOW_DOWN_SLOPE */
473    
474        iMin = 0  C-    Integrate forward in time, storing in gT_loc:  gT <= T + dt*gT
475        iMax = sNx+1        CALL TIMESTEP_TRACER(
476        jMin = 0       I                  bi, bj, dTtracerLev,
477        jMax = sNy+1       I                  theta(1-OLx,1-OLy,1,bi,bj),
478         U                  gT_loc,
479         I                  myTime, myIter, myThid )
480    
481  C--   Implicit vertical advection & diffusion  C--   Implicit vertical advection & diffusion
482    
# Line 450  C--   Implicit vertical advection & diff Line 484  C--   Implicit vertical advection & diff
484        IF ( tempImplVertAdv ) THEN        IF ( tempImplVertAdv ) THEN
485  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
486  CADJ STORE kappaRk(:,:,:) = comlev1_bibj , key=itdkey, byte=isbyte  CADJ STORE kappaRk(:,:,:) = comlev1_bibj , key=itdkey, byte=isbyte
487  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bibj , key=itdkey, byte=isbyte  CADJ STORE gT_loc(:,:,:) = comlev1_bibj , key=itdkey, byte=isbyte
488  CADJ STORE wFld(:,:,:) = comlev1_bibj , key=itdkey, byte=isbyte  CADJ STORE wFld(:,:,:) = comlev1_bibj , key=itdkey, byte=isbyte
489  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj , key=itdkey, byte=isbyte  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj , key=itdkey, byte=isbyte
490  CADJ STORE recip_hFac(:,:,:) = comlev1_bibj , key=itdkey, byte=isbyte  CADJ STORE recip_hFac(:,:,:) = comlev1_bibj , key=itdkey, byte=isbyte
491  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
492          CALL GAD_IMPLICIT_R(          CALL GAD_IMPLICIT_R(
493       I         tempImplVertAdv, tempVertAdvScheme, GAD_TEMPERATURE,       I         tempImplVertAdv, tempVertAdvScheme, GAD_TEMPERATURE,
494       I         dTtracerLev,       I         dTtracerLev, kappaRk, recip_hFac, wFld,
495       I         kappaRk, recip_hFac, wFld, theta,       I         theta(1-OLx,1-OLy,1,bi,bj),
496       U         gT,       U         gT_loc,
497       I         bi, bj, myTime, myIter, myThid )       I         bi, bj, myTime, myIter, myThid )
498        ELSEIF ( implicitDiffusion ) THEN        ELSEIF ( implicitDiffusion ) THEN
499  #else /* INCLUDE_IMPLVERTADV_CODE */  #else /* INCLUDE_IMPLVERTADV_CODE */
# Line 467  CADJ STORE recip_hFac(:,:,:) = comlev1_b Line 501  CADJ STORE recip_hFac(:,:,:) = comlev1_b
501  #endif /* INCLUDE_IMPLVERTADV_CODE */  #endif /* INCLUDE_IMPLVERTADV_CODE */
502  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
503  CADJ STORE kappaRk(:,:,:) = comlev1_bibj , key=itdkey, byte=isbyte  CADJ STORE kappaRk(:,:,:) = comlev1_bibj , key=itdkey, byte=isbyte
504  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bibj , key=itdkey, byte=isbyte  CADJ STORE gT_loc(:,:,:) = comlev1_bibj , key=itdkey, byte=isbyte
505  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
506          CALL IMPLDIFF(          CALL IMPLDIFF(
507       I         bi, bj, iMin, iMax, jMin, jMax,       I         bi, bj, iMin, iMax, jMin, jMax,
508       I         GAD_TEMPERATURE, kappaRk, recip_hFac,       I         GAD_TEMPERATURE, kappaRk, recip_hFac,
509       U         gT,       U         gT_loc,
510       I         myThid )       I         myThid )
511        ENDIF        ENDIF
512    
# Line 481  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bib Line 515  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bib
515       &       .OR. useGGL90 .OR. useGMredi .OR. ivdc_kappa.NE.0.       &       .OR. useGGL90 .OR. useGMredi .OR. ivdc_kappa.NE.0.
516        IF ( taveFreq.GT.0. .AND. useVariableK        IF ( taveFreq.GT.0. .AND. useVariableK
517       &                    .AND.implicitDiffusion ) THEN       &                    .AND.implicitDiffusion ) THEN
518          CALL TIMEAVE_CUMUL_DIF_1T(TdiffRtave, gT, kappaRk,          CALL TIMEAVE_CUMUL_DIF_1T( TdiffRtave,
519       I                        Nr, 3, deltaTClock, bi, bj, myThid)       I                        gT_loc, kappaRk,
520         I                        Nr, 3, deltaTClock, bi, bj, myThid )
521        ENDIF        ENDIF
522  #endif /* ALLOW_TIMEAVE */  #endif /* ALLOW_TIMEAVE */
523    
 #ifdef ALLOW_ADAMSBASHFORTH_3  
524        IF ( AdamsBashforth_T ) THEN        IF ( AdamsBashforth_T ) THEN
525  C-    Save current tracer field (for AB on tracer) and then update tracer  C-    Save current tracer field (for AB on tracer) and then update tracer
526  c       m1 = 1 + MOD(iterNb+1,2)  #ifdef ALLOW_ADAMSBASHFORTH_3
         m2 = 1 + MOD( iterNb ,2)  
527          CALL CYCLE_AB_TRACER(          CALL CYCLE_AB_TRACER(
528       I             bi, bj,       I             bi, bj, gT_loc,
529       U             theta, gT, gtNm(1-OLx,1-OLy,1,1,1,m2),       U             theta(1-OLx,1-OLy,1,bi,bj),
530         O             gtNm(1-OLx,1-OLy,1,bi,bj,m2),
531       I             myTime, myIter, myThid )       I             myTime, myIter, myThid )
       ELSEIF ( tempStepping ) THEN  
532  #else /* ALLOW_ADAMSBASHFORTH_3 */  #else /* ALLOW_ADAMSBASHFORTH_3 */
533        IF ( tempStepping ) THEN          CALL CYCLE_AB_TRACER(
534         I             bi, bj, gT_loc,
535         U             theta(1-OLx,1-OLy,1,bi,bj),
536         O             gtNm1(1-OLx,1-OLy,1,bi,bj),
537         I             myTime, myIter, myThid )
538  #endif /* ALLOW_ADAMSBASHFORTH_3 */  #endif /* ALLOW_ADAMSBASHFORTH_3 */
539          ELSE
540  C-    Update tracer fields:  T(n) = T**  C-    Update tracer fields:  T(n) = T**
541          CALL CYCLE_TRACER(          CALL CYCLE_TRACER(
542       I             bi, bj,       I             bi, bj,
543       U             theta, gT,       O             theta(1-OLx,1-OLy,1,bi,bj),
544       I             myTime, myIter, myThid )       I             gT_loc, myTime, myIter, myThid )
545        ENDIF        ENDIF
546    
547  #endif /* ALLOW_GENERIC_ADVDIFF */  #endif /* ALLOW_GENERIC_ADVDIFF */

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.18

  ViewVC Help
Powered by ViewVC 1.1.22