/[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.25 by heimbach, Sat Jul 13 04:59:42 2002 UTC revision 1.36 by heimbach, Tue Jan 21 19:19:45 2003 UTC
# Line 9  C $Name$ Line 9  C $Name$
9  # ifdef ALLOW_KPP  # ifdef ALLOW_KPP
10  #  include "KPP_OPTIONS.h"  #  include "KPP_OPTIONS.h"
11  # endif  # endif
12    cswdice --- add ----
13    #ifdef ALLOW_THERM_SEAICE
14    #include "ICE.h"
15    #endif
16    cswdice ------
17  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
18    
19  CBOP  CBOP
# Line 83  C     == Global variables === Line 88  C     == Global variables ===
88  # include "tamc.h"  # include "tamc.h"
89  # include "tamc_keys.h"  # include "tamc_keys.h"
90  # include "FFIELDS.h"  # include "FFIELDS.h"
91    # include "EOS.h"
92  # ifdef ALLOW_KPP  # ifdef ALLOW_KPP
93  #  include "KPP.h"  #  include "KPP.h"
94  # endif  # endif
# Line 164  CEOP Line 170  CEOP
170  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
171  C--   dummy statement to end declaration part  C--   dummy statement to end declaration part
172        ikey = 1        ikey = 1
173          itdkey = 1
174  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
175    
176  C--   Set up work arrays with valid (i.e. not NaN) values  C--   Set up work arrays with valid (i.e. not NaN) values
# Line 209  CHPF$&                  ) Line 216  CHPF$&                  )
216            act3 = myThid - 1            act3 = myThid - 1
217            max3 = nTx*nTy            max3 = nTx*nTy
218            act4 = ikey_dynamics - 1            act4 = ikey_dynamics - 1
219            ikey = (act1 + 1) + act2*max1            itdkey = (act1 + 1) + act2*max1
220       &                      + act3*max1*max2       &                      + act3*max1*max2
221       &                      + act4*max1*max2*max3       &                      + act4*max1*max2*max3
222  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
# Line 232  C--     Set up work arrays that need val Line 239  C--     Set up work arrays that need val
239           DO j=1-OLy,sNy+OLy           DO j=1-OLy,sNy+OLy
240            DO i=1-OLx,sNx+OLx            DO i=1-OLx,sNx+OLx
241  C This is currently also used by IVDC and Diagnostics  C This is currently also used by IVDC and Diagnostics
242             phiHyd(i,j,k)  = 0. _d 0             phiHyd(i,j,k) = 0. _d 0
243             sigmaX(i,j,k) = 0. _d 0             sigmaX(i,j,k) = 0. _d 0
244             sigmaY(i,j,k) = 0. _d 0             sigmaY(i,j,k) = 0. _d 0
245             sigmaR(i,j,k) = 0. _d 0             sigmaR(i,j,k) = 0. _d 0
246             ConvectCount(i,j,k) = 0.             ConvectCount(i,j,k) = 0.
247             KappaRT(i,j,k) = 0. _d 0             KappaRT(i,j,k)    = 0. _d 0
248             KappaRS(i,j,k) = 0. _d 0             KappaRS(i,j,k)    = 0. _d 0
249  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
250             gT(i,j,k,bi,bj) = 0. _d 0  cph all the following init. are necessary for TAF
251             gS(i,j,k,bi,bj) = 0. _d 0  cph although some of these are re-initialised later.
252  #ifdef ALLOW_PASSIVE_TRACER             gT(i,j,k,bi,bj)   = 0. _d 0
253               gS(i,j,k,bi,bj)   = 0. _d 0
254    # ifdef ALLOW_PASSIVE_TRACER
255             gTr1(i,j,k,bi,bj) = 0. _d 0             gTr1(i,j,k,bi,bj) = 0. _d 0
256  #endif  # endif
257  #ifdef ALLOW_GMREDI  # ifdef ALLOW_GMREDI
258             Kwx(i,j,k,bi,bj)    = 0. _d 0             Kwx(i,j,k,bi,bj)  = 0. _d 0
259             Kwy(i,j,k,bi,bj)    = 0. _d 0             Kwy(i,j,k,bi,bj)  = 0. _d 0
260             Kwz(i,j,k,bi,bj)    = 0. _d 0             Kwz(i,j,k,bi,bj)  = 0. _d 0
261  #ifdef GM_NON_UNITY_DIAGONAL  #  ifdef GM_NON_UNITY_DIAGONAL
262             Kux(i,j,k,bi,bj)    = 0. _d 0             Kux(i,j,k,bi,bj)  = 0. _d 0
263             Kvy(i,j,k,bi,bj)    = 0. _d 0             Kvy(i,j,k,bi,bj)  = 0. _d 0
264  #endif  #  endif
265  #endif /* ALLOW_GMREDI */  #  ifdef GM_EXTRA_DIAGONAL
266  #endif             Kuz(i,j,k,bi,bj)  = 0. _d 0
267               Kvz(i,j,k,bi,bj)  = 0. _d 0
268    #  endif
269    #  ifdef GM_BOLUS_ADVEC
270               GM_PsiX(i,j,k,bi,bj)  = 0. _d 0
271               GM_PsiY(i,j,k,bi,bj)  = 0. _d 0
272    #  endif
273    #  ifdef GM_VISBECK_VARIABLE_K
274               VisbeckK(i,j,bi,bj)   = 0. _d 0
275    #  endif
276    # endif /* ALLOW_GMREDI */
277    #endif /* ALLOW_AUTODIFF_TAMC */
278            ENDDO            ENDDO
279           ENDDO           ENDDO
280          ENDDO          ENDDO
# Line 266  C This is currently also used by IVDC an Line 286  C This is currently also used by IVDC an
286    
287    
288  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
289  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
290  CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte  CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
291  #ifdef ALLOW_KPP  #ifdef ALLOW_KPP
292  CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte  CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
293  CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte  CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
294  #endif  #endif
295  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
296    
# Line 282  C? Patrick, is this formula correct now Line 302  C? Patrick, is this formula correct now
302  C? Do we still need this?  C? Do we still need this?
303  cph kkey formula corrected.  cph kkey formula corrected.
304  cph Needed for rhok, rhokm1, in the case useGMREDI.  cph Needed for rhok, rhokm1, in the case useGMREDI.
305           kkey = (ikey-1)*Nr + k           kkey = (itdkey-1)*Nr + k
 CADJ STORE rhokm1(:,:) = comlev1_bibj_k ,       key=kkey, byte=isbyte  
 CADJ STORE rhok  (:,:) = comlev1_bibj_k ,       key=kkey, byte=isbyte  
306  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
307    
308  C--       Integrate continuity vertically for vertical velocity  C--       Integrate continuity vertically for vertical velocity
309            CALL INTEGRATE_FOR_W(  c         CALL INTEGRATE_FOR_W(
310       I                         bi, bj, k, uVel, vVel,  c    I                         bi, bj, k, uVel, vVel,
311       O                         wVel,  c    O                         wVel,
312       I                         myThid )  c    I                         myThid )
313    
314  #ifdef    ALLOW_OBCS  #ifdef    ALLOW_OBCS
315  #ifdef    ALLOW_NONHYDROSTATIC  #ifdef    ALLOW_NONHYDROSTATIC
316  C--       Apply OBC to W if in N-H mode  C--       Apply OBC to W if in N-H mode
317            IF (useOBCS.AND.nonHydrostatic) THEN  c         IF (useOBCS.AND.nonHydrostatic) THEN
318              CALL OBCS_APPLY_W( bi, bj, k, wVel, myThid )  c           CALL OBCS_APPLY_W( bi, bj, k, wVel, myThid )
319            ENDIF  c         ENDIF
320  #endif    /* ALLOW_NONHYDROSTATIC */  #endif    /* ALLOW_NONHYDROSTATIC */
321  #endif    /* ALLOW_OBCS */  #endif    /* ALLOW_OBCS */
322    
# Line 313  c         IF ( k.GT.1 .AND. (useGMRedi.O Line 331  c         IF ( k.GT.1 .AND. (useGMRedi.O
331  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
332  CADJ STORE theta(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte  CADJ STORE theta(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
333  CADJ STORE salt (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte  CADJ STORE salt (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
334    CADJ STORE pressure(:,:,k,bi,bj) =
335    CADJ &     comlev1_bibj_k, key=kkey, byte=isbyte
336  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
337              CALL FIND_RHO(              CALL FIND_RHO(
338       I        bi, bj, iMin, iMax, jMin, jMax, k, k, eosType,       I        bi, bj, iMin, iMax, jMin, jMax, k, k,
339       I        theta, salt,       I        theta, salt,
340       O        rhoK,       O        rhoK,
341       I        myThid )       I        myThid )
342    
343              IF (k.GT.1) THEN              IF (k.GT.1) THEN
344  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
345  CADJ STORE theta(:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte  CADJ STORE theta(:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
346  CADJ STORE salt (:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte  CADJ STORE salt (:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
347    CADJ STORE pressure(:,:,k-1,bi,bj) =
348    CADJ &     comlev1_bibj_k, key=kkey, byte=isbyte
349  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
350               CALL FIND_RHO(               CALL FIND_RHO(
351       I        bi, bj, iMin, iMax, jMin, jMax, k-1, k, eosType,       I        bi, bj, iMin, iMax, jMin, jMax, k-1, k,
352       I        theta, salt,       I        theta, salt,
353       O        rhoKm1,       O        rhoKm1,
354       I        myThid )       I        myThid )
# Line 337  CADJ STORE salt (:,:,k-1,bi,bj) = comlev Line 360  CADJ STORE salt (:,:,k-1,bi,bj) = comlev
360       I             myThid )       I             myThid )
361            ENDIF            ENDIF
362    
363    #ifdef ALLOW_AUTODIFF_TAMC
364    CADJ STORE rhok   (:,:) = comlev1_bibj_k ,       key=kkey, byte=isbyte
365    CADJ STORE rhokm1 (:,:) = comlev1_bibj_k ,       key=kkey, byte=isbyte
366    #endif /* ALLOW_AUTODIFF_TAMC */
367  C--       Implicit Vertical Diffusion for Convection  C--       Implicit Vertical Diffusion for Convection
368  c ==> should use sigmaR !!!  c ==> should use sigmaR !!!
369            IF (k.GT.1 .AND. ivdc_kappa.NE.0.) THEN            IF (k.GT.1 .AND. ivdc_kappa.NE.0.) THEN
# Line 354  C--     end of diagnostic k loop (Nr:1) Line 381  C--     end of diagnostic k loop (Nr:1)
381    
382  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
383  cph avoids recomputation of integrate_for_w  cph avoids recomputation of integrate_for_w
384  CADJ STORE wvel (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte  CADJ STORE wvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
385    CADJ STORE pressure (:,:,:,bi,bj) =
386    CADJ &     comlev1_bibj, key=itdkey, byte=isbyte
387  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
388    
389  #ifdef  ALLOW_OBCS  #ifdef  ALLOW_OBCS
# Line 366  C--     Calculate future values on open Line 395  C--     Calculate future values on open
395          ENDIF          ENDIF
396  #endif  /* ALLOW_OBCS */  #endif  /* ALLOW_OBCS */
397    
398    
399    c********************************************
400    cswdice --- add ---
401    #ifdef ALLOW_THERM_SEAICE
402    C--     Determines forcing terms based on external fields
403    c--     including effects from ice
404            CALL ICE_FORCING(
405         I             bi, bj, iMin, iMax, jMin, jMax,
406         I             myThid )
407    #else
408    
409    cswdice --- end add ---
410    
411  C--     Determines forcing terms based on external fields  C--     Determines forcing terms based on external fields
412  C       relaxation terms, etc.  C       relaxation terms, etc.
413          CALL EXTERNAL_FORCING_SURF(          CALL EXTERNAL_FORCING_SURF(
414       I             bi, bj, iMin, iMax, jMin, jMax,       I             bi, bj, iMin, iMax, jMin, jMax,
415       I             myThid )       I             myThid )
416    cswdice --- add ----
417    #endif
418    cswdice --- end add ---
419    c******************************************
420    
421    
422    
423    
424  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
425  cph needed for KPP  cph needed for KPP
426  CADJ STORE surfacetendencyU(:,:,bi,bj)  CADJ STORE surfacetendencyU(:,:,bi,bj)
427  CADJ &     = comlev1_bibj, key=ikey, byte=isbyte  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte
428  CADJ STORE surfacetendencyV(:,:,bi,bj)  CADJ STORE surfacetendencyV(:,:,bi,bj)
429  CADJ &     = comlev1_bibj, key=ikey, byte=isbyte  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte
430  CADJ STORE surfacetendencyS(:,:,bi,bj)  CADJ STORE surfacetendencyS(:,:,bi,bj)
431  CADJ &     = comlev1_bibj, key=ikey, byte=isbyte  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte
432  CADJ STORE surfacetendencyT(:,:,bi,bj)  CADJ STORE surfacetendencyT(:,:,bi,bj)
433  CADJ &     = comlev1_bibj, key=ikey, byte=isbyte  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte
434  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
435    
436  C--     Attention: by defining "SINGLE_LAYER_MODE" in CPP_OPTIONS.h  C--     Attention: by defining "SINGLE_LAYER_MODE" in CPP_OPTIONS.h
# Line 390  C--     MOST of THERMODYNAMICS will be d Line 440  C--     MOST of THERMODYNAMICS will be d
440  #ifdef  ALLOW_GMREDI  #ifdef  ALLOW_GMREDI
441    
442  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
443  CADJ STORE sigmaX(:,:,k)        = comlev1_bibj_k, key=kkey, byte=isbyte  cph storing here is needed only for one GMREDI_OPTIONS:
444  CADJ STORE sigmaY(:,:,k)        = comlev1_bibj_k, key=kkey, byte=isbyte  cph define GM_BOLUS_ADVEC
445  CADJ STORE sigmaR(:,:,k)        = comlev1_bibj_k, key=kkey, byte=isbyte  cph but I've avoided the #ifdef for now, in case more things change
446    CADJ STORE sigmaX(:,:,:)        = comlev1_bibj, key=itdkey, byte=isbyte
447    CADJ STORE sigmaY(:,:,:)        = comlev1_bibj, key=itdkey, byte=isbyte
448    CADJ STORE sigmaR(:,:,:)        = comlev1_bibj, key=itdkey, byte=isbyte
449  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
450    
451  C--     Calculate iso-neutral slopes for the GM/Redi parameterisation  C--     Calculate iso-neutral slopes for the GM/Redi parameterisation
452          IF (useGMRedi) THEN          IF (useGMRedi) THEN
453            CALL GMREDI_CALC_TENSOR(            CALL GMREDI_CALC_TENSOR(
# Line 410  C--     Calculate iso-neutral slopes for Line 464  C--     Calculate iso-neutral slopes for
464          ENDIF          ENDIF
465    
466  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
467  CADJ STORE Kwx(:,:,:,bi,bj)   = comlev1_bibj, key=ikey, byte=isbyte  CADJ STORE Kwx(:,:,:,bi,bj)   = comlev1_bibj, key=itdkey, byte=isbyte
468  CADJ STORE Kwy(:,:,:,bi,bj)   = comlev1_bibj, key=ikey, byte=isbyte  CADJ STORE Kwy(:,:,:,bi,bj)   = comlev1_bibj, key=itdkey, byte=isbyte
469  CADJ STORE Kwz(:,:,:,bi,bj)   = comlev1_bibj, key=ikey, byte=isbyte  CADJ STORE Kwz(:,:,:,bi,bj)   = comlev1_bibj, key=itdkey, byte=isbyte
470  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
471    
472  #endif  /* ALLOW_GMREDI */  #endif  /* ALLOW_GMREDI */
# Line 434  CADJ STORE KPPghat   (:,:,:,bi,bj) Line 488  CADJ STORE KPPghat   (:,:,:,bi,bj)
488  CADJ &   , KPPdiffKzT(:,:,:,bi,bj)  CADJ &   , KPPdiffKzT(:,:,:,bi,bj)
489  CADJ &   , KPPdiffKzS(:,:,:,bi,bj)  CADJ &   , KPPdiffKzS(:,:,:,bi,bj)
490  CADJ &   , KPPfrac   (:,:  ,bi,bj)  CADJ &   , KPPfrac   (:,:  ,bi,bj)
491  CADJ &                 = comlev1_bibj, key=ikey, byte=isbyte  CADJ &                 = comlev1_bibj, key=itdkey, byte=isbyte
492  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
493    
494  #endif  /* ALLOW_KPP */  #endif  /* ALLOW_KPP */
495    
496  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
497  CADJ STORE KappaRT(:,:,:)     = comlev1_bibj, key=ikey, byte=isbyte  CADJ STORE KappaRT(:,:,:)     = comlev1_bibj, key=itdkey, byte=isbyte
498  CADJ STORE KappaRS(:,:,:)     = comlev1_bibj, key=ikey, byte=isbyte  CADJ STORE KappaRS(:,:,:)     = comlev1_bibj, key=itdkey, byte=isbyte
499  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
500  CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte  CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
501  CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte  CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
502  CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte  CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
503  #ifdef ALLOW_PASSIVE_TRACER  #ifdef ALLOW_PASSIVE_TRACER
504  CADJ STORE tr1  (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte  CADJ STORE tr1  (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
505  #endif  #endif
506  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
507    
508  #ifdef ALLOW_AIM  #ifdef ALLOW_AIM
509  C       AIM - atmospheric intermediate model, physics package code.  C       AIM - atmospheric intermediate model, physics package code.
 C note(jmc) : phiHyd=0 at this point but is not really used in Molteni Physics  
510          IF ( useAIM ) THEN          IF ( useAIM ) THEN
511           CALL TIMER_START('AIM_DO_ATMOS_PHYS      [DYNAMICS]', myThid)           CALL TIMER_START('AIM_DO_PHYSICS   [THERMODYNAMICS]', myThid)
512           CALL AIM_DO_ATMOS_PHYSICS( phiHyd, bi, bj, myTime, myThid )           CALL AIM_DO_PHYSICS( bi, bj, myTime, myIter, myThid )
513           CALL TIMER_STOP ('AIM_DO_ATMOS_PHYS      [DYNAMICS]', myThid)           CALL TIMER_STOP( 'AIM_DO_PHYSICS   [THERMODYNAMICS]', myThid)
514          ENDIF          ENDIF
515  #endif /* ALLOW_AIM */  #endif /* ALLOW_AIM */
516    
# Line 505  C--     Start of thermodynamics loop Line 558  C--     Start of thermodynamics loop
558  C? Patrick Is this formula correct?  C? Patrick Is this formula correct?
559  cph Yes, but I rewrote it.  cph Yes, but I rewrote it.
560  cph Also, the KappaR? need the index and subscript k!  cph Also, the KappaR? need the index and subscript k!
561           kkey = (ikey-1)*Nr + k           kkey = (itdkey-1)*Nr + k
562  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
563    
564  C--       km1    Points to level above k (=k-1)  C--       km1    Points to level above k (=k-1)
# Line 528  C--       Get temporary terms used by te Line 581  C--       Get temporary terms used by te
581       I         myThid)       I         myThid)
582    
583  #ifdef ALLOW_GMREDI  #ifdef ALLOW_GMREDI
584    
585  C--   Residual transp = Bolus transp + Eulerian transp  C--   Residual transp = Bolus transp + Eulerian transp
586            IF (useGMRedi) THEN            IF (useGMRedi) THEN
587              CALL GMREDI_CALC_UVFLOW(              CALL GMREDI_CALC_UVFLOW(
# Line 535  C--   Residual transp = Bolus transp + E Line 589  C--   Residual transp = Bolus transp + E
589              IF (K.GE.2) CALL GMREDI_CALC_WFLOW(              IF (K.GE.2) CALL GMREDI_CALC_WFLOW(
590       &                    rTrans, bi, bj, k, myThid)       &                    rTrans, bi, bj, k, myThid)
591            ENDIF            ENDIF
592    
593    #ifdef ALLOW_AUTODIFF_TAMC
594    #ifdef GM_BOLUS_ADVEC
595    CADJ STORE uTrans(:,:)    = comlev1_bibj_k, key=kkey, byte=isbyte
596    CADJ STORE vTrans(:,:)    = comlev1_bibj_k, key=kkey, byte=isbyte
597    CADJ STORE rTrans(:,:)    = comlev1_bibj_k, key=kkey, byte=isbyte
598    #endif
599    #endif /* ALLOW_AUTODIFF_TAMC */
600    
601  #endif /* ALLOW_GMREDI */  #endif /* ALLOW_GMREDI */
602    
603  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
# Line 570  C        and step forward storing result Line 633  C        and step forward storing result
633       I         theta, gT,       I         theta, gT,
634       I         myIter, myThid)       I         myIter, myThid)
635           ENDIF           ENDIF
636    cswdice ---- add ---
637    #ifdef ALLOW_THERM_SEAICE
638           if (k.eq.1) then
639            call ICE_FREEZE(bi, bj, iMin, iMax, jMin, jMax, myThid )
640           endif
641    #endif
642    cswdice -- end add ---
643           IF ( saltStepping ) THEN           IF ( saltStepping ) THEN
644             CALL CALC_GS(             CALL CALC_GS(
645       I         bi,bj,iMin,iMax,jMin,jMax, k,km1,kup,kDown,       I         bi,bj,iMin,iMax,jMin,jMax, k,km1,kup,kDown,
# Line 614  C--      Apply open boundary conditions Line 684  C--      Apply open boundary conditions
684  #endif   /* ALLOW_OBCS */  #endif   /* ALLOW_OBCS */
685    
686  C--      Freeze water  C--      Freeze water
687           IF (allowFreezing) THEN           IF ( allowFreezing .AND. .NOT. useSEAICE ) THEN
688  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
689  CADJ STORE gT(:,:,k,bi,bj) = comlev1_bibj_k  CADJ STORE gT(:,:,k,bi,bj) = comlev1_bibj_k
690  CADJ &   , key = kkey, byte = isbyte  CADJ &   , key = kkey, byte = isbyte
# Line 625  CADJ &   , key = kkey, byte = isbyte Line 695  CADJ &   , key = kkey, byte = isbyte
695  C--     end of thermodynamic k loop (Nr:1)  C--     end of thermodynamic k loop (Nr:1)
696          ENDDO          ENDDO
697    
698    cswdice -- add ---
699    #ifdef ALLOW_THERM_SEAICE
700    c timeaveraging for ice model values
701               CALL ICE_AVE(bi,bj,iMin,iMax,jMin,jMax,myThid )
702    #endif
703    cswdice --- end add ---
704    
705    
706    
707    
708  C--     Implicit diffusion  C--     Implicit diffusion
709          IF (implicitDiffusion) THEN          IF (implicitDiffusion) THEN
710    
711           IF (tempStepping) THEN           IF (tempStepping) THEN
712  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
713  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bibj , key=itdkey, byte=isbyte
714  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
715              CALL IMPLDIFF(              CALL IMPLDIFF(
716       I         bi, bj, iMin, iMax, jMin, jMax,       I         bi, bj, iMin, iMax, jMin, jMax,
# Line 641  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bib Line 721  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bib
721    
722           IF (saltStepping) THEN           IF (saltStepping) THEN
723  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
724  CADJ STORE gS(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte  CADJ STORE gS(:,:,:,bi,bj) = comlev1_bibj , key=itdkey, byte=isbyte
725  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
726              CALL IMPLDIFF(              CALL IMPLDIFF(
727       I         bi, bj, iMin, iMax, jMin, jMax,       I         bi, bj, iMin, iMax, jMin, jMax,
# Line 653  CADJ STORE gS(:,:,:,bi,bj) = comlev1_bib Line 733  CADJ STORE gS(:,:,:,bi,bj) = comlev1_bib
733  #ifdef ALLOW_PASSIVE_TRACER  #ifdef ALLOW_PASSIVE_TRACER
734           IF (tr1Stepping) THEN           IF (tr1Stepping) THEN
735  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
736  CADJ STORE gTr1(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte  CADJ STORE gTr1(:,:,:,bi,bj) = comlev1_bibj , key=itdkey, byte=isbyte
737  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
738            CALL IMPLDIFF(            CALL IMPLDIFF(
739       I      bi, bj, iMin, iMax, jMin, jMax,       I      bi, bj, iMin, iMax, jMin, jMax,
# Line 689  Ccs- Line 769  Ccs-
769        ENDDO        ENDDO
770    
771  #ifdef ALLOW_AIM  #ifdef ALLOW_AIM
772        IF ( useAIM ) THEN  c     IF ( useAIM ) THEN
773         CALL AIM_AIM2DYN_EXCHANGES( myTime, myThid )  c      CALL AIM_AIM2DYN_EXCHANGES( myTime, myThid )
774        ENDIF  c     ENDIF
775  #endif /* ALLOW_AIM */  #endif /* ALLOW_AIM */
776        IF ( staggerTimeStep ) THEN  c     IF ( staggerTimeStep ) THEN
777         IF ( useAIM .OR. useCubedSphereExchange ) THEN  c      IF ( useAIM .OR. useCubedSphereExchange ) THEN
778           IF (tempStepping) _EXCH_XYZ_R8(gT,myThid)  c        IF (tempStepping) _EXCH_XYZ_R8(gT,myThid)
779           IF (saltStepping) _EXCH_XYZ_R8(gS,myThid)  c        IF (saltStepping) _EXCH_XYZ_R8(gS,myThid)
780         ELSEIF ( useGMRedi .AND. Oly.LT.4 ) THEN  c      ELSEIF ( useGMRedi .AND. Oly.LT.4 ) THEN
781  c        .AND. GM_AdvForm .AND. .NOT.GM_AdvSeparate ) THEN  cc       .AND. GM_AdvForm .AND. .NOT.GM_AdvSeparate ) THEN
782           IF (tempMultiDimAdvec) _EXCH_XYZ_R8(gT,myThid)  c        IF (tempMultiDimAdvec) _EXCH_XYZ_R8(gT,myThid)
783           IF (saltMultiDimAdvec) _EXCH_XYZ_R8(gS,myThid)  c        IF (saltMultiDimAdvec) _EXCH_XYZ_R8(gS,myThid)
784         ENDIF    c      ENDIF  
785        ENDIF    c     ENDIF  
786    
787  #ifndef DISABLE_DEBUGMODE  #ifndef DISABLE_DEBUGMODE
788        If (debugMode) THEN        If (debugMode) THEN

Legend:
Removed from v.1.25  
changed lines
  Added in v.1.36

  ViewVC Help
Powered by ViewVC 1.1.22