/[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.13 by adcroft, Fri Sep 28 03:36:16 2001 UTC revision 1.13.2.5 by heimbach, Thu May 30 02:51:24 2002 UTC
# Line 2  C $Header$ Line 2  C $Header$
2  C $Name$  C $Name$
3    
4  #include "CPP_OPTIONS.h"  #include "CPP_OPTIONS.h"
5    #ifdef ALLOW_AUTODIFF_TAMC
6    # ifdef ALLOW_GMREDI
7    #  include "GMREDI_OPTIONS.h"
8    # endif
9    # ifdef ALLOW_KPP
10    #  include "KPP_OPTIONS.h"
11    # endif
12    #endif
13    
14  CBOP  CBOP
15  C     !ROUTINE: THERMODYNAMICS  C     !ROUTINE: THERMODYNAMICS
# Line 151  C     This is currently used by IVDC and Line 159  C     This is currently used by IVDC and
159        INTEGER i, j        INTEGER i, j
160        INTEGER k, km1, kup, kDown        INTEGER k, km1, kup, kDown
161    
 Cjmc : add for phiHyd output <- but not working if multi tile per CPU  
 c     CHARACTER*(MAX_LEN_MBUF) suff  
 c     LOGICAL  DIFFERENT_MULTIPLE  
 c     EXTERNAL DIFFERENT_MULTIPLE  
 Cjmc(end)  
162  CEOP  CEOP
163    
164  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
# Line 174  C     uninitialised but inert locations. Line 177  C     uninitialised but inert locations.
177          yA(i,j)      = 0. _d 0          yA(i,j)      = 0. _d 0
178          uTrans(i,j)  = 0. _d 0          uTrans(i,j)  = 0. _d 0
179          vTrans(i,j)  = 0. _d 0          vTrans(i,j)  = 0. _d 0
         DO k=1,Nr  
          phiHyd(i,j,k)  = 0. _d 0  
          sigmaX(i,j,k) = 0. _d 0  
          sigmaY(i,j,k) = 0. _d 0  
          sigmaR(i,j,k) = 0. _d 0  
         ENDDO  
         rhoKM1 (i,j) = 0. _d 0  
180          rhok   (i,j) = 0. _d 0          rhok   (i,j) = 0. _d 0
181          phiSurfX(i,j) = 0. _d 0          phiSurfX(i,j) = 0. _d 0
182          phiSurfY(i,j) = 0. _d 0          phiSurfY(i,j) = 0. _d 0
# Line 228  C--     Set up work arrays that need val Line 224  C--     Set up work arrays that need val
224            fVerS  (i,j,2) = 0. _d 0            fVerS  (i,j,2) = 0. _d 0
225            fVerTr1(i,j,1) = 0. _d 0            fVerTr1(i,j,1) = 0. _d 0
226            fVerTr1(i,j,2) = 0. _d 0            fVerTr1(i,j,2) = 0. _d 0
227              rhoKM1 (i,j)   = 0. _d 0
228           ENDDO           ENDDO
229          ENDDO          ENDDO
230    
# Line 235  C--     Set up work arrays that need val Line 232  C--     Set up work arrays that need val
232           DO j=1-OLy,sNy+OLy           DO j=1-OLy,sNy+OLy
233            DO i=1-OLx,sNx+OLx            DO i=1-OLx,sNx+OLx
234  C This is currently also used by IVDC and Diagnostics  C This is currently also used by IVDC and Diagnostics
235               phiHyd(i,j,k)  = 0. _d 0
236               sigmaX(i,j,k) = 0. _d 0
237               sigmaY(i,j,k) = 0. _d 0
238               sigmaR(i,j,k) = 0. _d 0
239             ConvectCount(i,j,k) = 0.             ConvectCount(i,j,k) = 0.
240             KappaRT(i,j,k) = 0. _d 0             KappaRT(i,j,k) = 0. _d 0
241             KappaRS(i,j,k) = 0. _d 0             KappaRS(i,j,k) = 0. _d 0
# Line 244  C This is currently also used by IVDC an Line 245  C This is currently also used by IVDC an
245  #ifdef ALLOW_PASSIVE_TRACER  #ifdef ALLOW_PASSIVE_TRACER
246             gTr1(i,j,k,bi,bj) = 0. _d 0             gTr1(i,j,k,bi,bj) = 0. _d 0
247  #endif  #endif
248    #ifdef ALLOW_GMREDI
249               Kwx(i,j,k,bi,bj)    = 0. _d 0
250               Kwy(i,j,k,bi,bj)    = 0. _d 0
251               Kwz(i,j,k,bi,bj)    = 0. _d 0
252    #ifdef GM_NON_UNITY_DIAGONAL
253               Kux(i,j,k,bi,bj)    = 0. _d 0
254               Kvy(i,j,k,bi,bj)    = 0. _d 0
255    #endif
256    #endif /* ALLOW_GMREDI */
257  #endif  #endif
258            ENDDO            ENDDO
259           ENDDO           ENDDO
260          ENDDO          ENDDO
261    
262          iMin = 1-OLx+1          iMin = 1-OLx
263          iMax = sNx+OLx          iMax = sNx+OLx
264          jMin = 1-OLy+1          jMin = 1-OLy
265          jMax = sNy+OLy          jMax = sNy+OLy
266    
267    
# Line 292  C--       Apply OBC to W if in N-H mode Line 302  C--       Apply OBC to W if in N-H mode
302  #endif    /* ALLOW_NONHYDROSTATIC */  #endif    /* ALLOW_NONHYDROSTATIC */
303  #endif    /* ALLOW_OBCS */  #endif    /* ALLOW_OBCS */
304    
305    C--       Attention: by defining "SINGLE_LAYER_MODE" in CPP_OPTIONS.h
306    C--       MOST of THERMODYNAMICS will be disabled
307    #ifndef SINGLE_LAYER_MODE
308    
309  C--       Calculate gradients of potential density for isoneutral  C--       Calculate gradients of potential density for isoneutral
310  C         slope terms (e.g. GM/Redi tensor or IVDC diffusivity)  C         slope terms (e.g. GM/Redi tensor or IVDC diffusivity)
311  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
# Line 333  c ==> should use sigmaR !!! Line 347  c ==> should use sigmaR !!!
347       I        myTime, myIter, myThid)       I        myTime, myIter, myThid)
348            ENDIF            ENDIF
349    
350    #endif /* SINGLE_LAYER_MODE */
351    
352  C--     end of diagnostic k loop (Nr:1)  C--     end of diagnostic k loop (Nr:1)
353          ENDDO          ENDDO
354    
# Line 344  CADJ STORE wvel (:,:,:,bi,bj) = comlev1_ Line 360  CADJ STORE wvel (:,:,:,bi,bj) = comlev1_
360  #ifdef  ALLOW_OBCS  #ifdef  ALLOW_OBCS
361  C--     Calculate future values on open boundaries  C--     Calculate future values on open boundaries
362          IF (useOBCS) THEN          IF (useOBCS) THEN
363            CALL OBCS_CALC( bi, bj, myTime+deltaT,            CALL OBCS_CALC( bi, bj, myTime+deltaT, myIter+1,
364       I            uVel, vVel, wVel, theta, salt,       I            uVel, vVel, wVel, theta, salt,
365       I            myThid )       I            myThid )
366          ENDIF          ENDIF
# Line 367  CADJ STORE surfacetendencyT(:,:,bi,bj) Line 383  CADJ STORE surfacetendencyT(:,:,bi,bj)
383  CADJ &     = comlev1_bibj, key=ikey, byte=isbyte  CADJ &     = comlev1_bibj, key=ikey, byte=isbyte
384  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
385    
386    C--     Attention: by defining "SINGLE_LAYER_MODE" in CPP_OPTIONS.h
387    C--     MOST of THERMODYNAMICS will be disabled
388    #ifndef SINGLE_LAYER_MODE
389    
390  #ifdef  ALLOW_GMREDI  #ifdef  ALLOW_GMREDI
391    
392  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
393  CADJ STORE sigmaX(:,:,:) = comlev1, key=ikey, byte=isbyte  CADJ STORE sigmaX(:,:,k)        = comlev1_bibj_k, key=kkey, byte=isbyte
394  CADJ STORE sigmaY(:,:,:) = comlev1, key=ikey, byte=isbyte  CADJ STORE sigmaY(:,:,k)        = comlev1_bibj_k, key=kkey, byte=isbyte
395  CADJ STORE sigmaR(:,:,:) = comlev1, key=ikey, byte=isbyte  CADJ STORE sigmaR(:,:,k)        = comlev1_bibj_k, key=kkey, byte=isbyte
396  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
397  C--     Calculate iso-neutral slopes for the GM/Redi parameterisation  C--     Calculate iso-neutral slopes for the GM/Redi parameterisation
398          IF (useGMRedi) THEN          IF (useGMRedi) THEN
399            DO k=1,Nr            CALL GMREDI_CALC_TENSOR(
400              CALL GMREDI_CALC_TENSOR(       I             bi, bj, iMin, iMax, jMin, jMax,
      I             bi, bj, iMin, iMax, jMin, jMax, k,  
401       I             sigmaX, sigmaY, sigmaR,       I             sigmaX, sigmaY, sigmaR,
402       I             myThid )       I             myThid )
           ENDDO  
403  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
404          ELSE          ELSE
405            DO k=1, Nr            CALL GMREDI_CALC_TENSOR_DUMMY(
406              CALL GMREDI_CALC_TENSOR_DUMMY(       I             bi, bj, iMin, iMax, jMin, jMax,
      I             bi, bj, iMin, iMax, jMin, jMax, k,  
407       I             sigmaX, sigmaY, sigmaR,       I             sigmaX, sigmaY, sigmaR,
408       I             myThid )       I             myThid )
           ENDDO  
409  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
410          ENDIF          ENDIF
411    
# Line 445  C note(jmc) : phiHyd=0 at this point but Line 461  C note(jmc) : phiHyd=0 at this point but
461          ENDIF          ENDIF
462  #endif /* ALLOW_AIM */  #endif /* ALLOW_AIM */
463    
464    #ifdef ALLOW_TIMEAVE
465            IF (taveFreq.GT.0. .AND. ivdc_kappa.NE.0.) THEN
466              CALL TIMEAVE_CUMULATE(ConvectCountTave, ConvectCount, Nr,
467         I                               deltaTclock, bi, bj, myThid)
468            ENDIF
469    #endif /* ALLOW_TIMEAVE */
470    
471  #ifndef DISABLE_MULTIDIM_ADVECTION  #ifndef DISABLE_MULTIDIM_ADVECTION
472  C--     Some advection schemes are better calculated using a multi-dimensional  C--     Some advection schemes are better calculated using a multi-dimensional
473  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.
# Line 646  C--      Apply open boundary conditions Line 669  C--      Apply open boundary conditions
669  C--     End If implicitDiffusion  C--     End If implicitDiffusion
670          ENDIF          ENDIF
671    
672    #endif /* SINGLE_LAYER_MODE */
673    
674  Ccs-  Ccs-
675         ENDDO         ENDDO
676        ENDDO        ENDDO

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

  ViewVC Help
Powered by ViewVC 1.1.22