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

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

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

revision 1.8 by cnh, Wed Sep 26 18:09:14 2001 UTC revision 1.15 by mlosch, Fri Nov 1 22:00:33 2002 UTC
# Line 24  C     == Global data == Line 24  C     == Global data ==
24  #include "PARAMS.h"  #include "PARAMS.h"
25  #include "DYNVARS.h"  #include "DYNVARS.h"
26  #include "GRID.h"  #include "GRID.h"
27    #ifdef ALLOW_PASSIVE_TRACER
28    #include "TR1.h"
29    #endif
30  #ifdef ALLOW_TIMEAVE  #ifdef ALLOW_TIMEAVE
31  #include "TIMEAVE_STATV.h"  #include "TIMEAVE_STATV.h"
32  #endif  #endif
# Line 51  C     !LOCAL VARIABLES: Line 54  C     !LOCAL VARIABLES:
54  C     == Local variables ==  C     == Local variables ==
55  C     rhoKm1, rhoK :: Density at adjacent levels (common ref. level)  C     rhoKm1, rhoK :: Density at adjacent levels (common ref. level)
56  C     ConvectCount :: Convection mixing freq. counter.  C     ConvectCount :: Convection mixing freq. counter.
57        INTEGER i, j, K        INTEGER i, j, K, kTop, kBottom, kDir, kRef
58        _RL rhoKm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL rhoKm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
59        _RL rhoK  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL rhoK  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
60        _RL ConvectCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)        _RL ConvectCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
61          _RL weightA(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
62          _RL weightB(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
63  CEOP  CEOP
64    
65  C--   Check to see if should convect now  C--   Check to see if should convect now
# Line 72  C-      Initialisation of Convection Cou Line 77  C-      Initialisation of Convection Cou
77  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
78            act1 = bi - myBxLo(myThid)            act1 = bi - myBxLo(myThid)
79            max1 = myBxHi(myThid) - myBxLo(myThid) + 1            max1 = myBxHi(myThid) - myBxLo(myThid) + 1
   
80            act2 = bj - myByLo(myThid)            act2 = bj - myByLo(myThid)
81            max2 = myByHi(myThid) - myByLo(myThid) + 1            max2 = myByHi(myThid) - myByLo(myThid) + 1
   
82            act3 = myThid - 1            act3 = myThid - 1
83            max3 = nTx*nTy            max3 = nTx*nTy
   
84            act4 = ikey_dynamics - 1            act4 = ikey_dynamics - 1
   
85            ikey = (act1 + 1) + act2*max1            ikey = (act1 + 1) + act2*max1
86       &                      + act3*max1*max2       &                      + act3*max1*max2
87       &                      + act4*max1*max2*max3       &                      + act4*max1*max2*max3
88  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
89    
90  #ifdef  ALLOW_KPP  #ifdef  ALLOW_KPP
91    C--       CONVECT not needed with KPP mixing
92          IF (          IF (
93       &      (.NOT.useKPP) ! CONVECT not needed with KPP mixing       &      (.NOT.useKPP)
94       &     ) THEN       &     ) THEN
95  #endif  /* ALLOW_KPP */  #endif  /* ALLOW_KPP */
96    
97             IF ( buoyancyRelation .eq. 'OCEANIC' ) THEN
98              kTop    = 2
99              kBottom = Nr
100              kDir    = 1
101             ELSEIF ( buoyancyRelation .eq. 'OCEANICP' ) THEN
102              kTop    = Nr-1
103              kBottom =  1
104              kDir    = -1
105             ELSEIF ( buoyancyRelation .eq. 'ATMOSPHERIC' ) THEN
106              kTop    = Nr-1
107              kBottom =  1
108              kDir    = -1
109             ELSE
110              STOP 'CONVECTIVE_ADJUSTMENT: We should never reach this point'
111             ENDIF  
112    
113  C--       Loop over all *interior* layers  C--       Loop over all *interior* layers
114            DO K=2,Nr            DO K=kTop,kBottom,kDir
115    
116               IF ( buoyancyRelation .eq. 'OCEANIC' ) THEN
117                kRef = k-1
118               ELSEIF ( buoyancyRelation .eq. 'OCEANICP' ) THEN
119                kRef = k
120               ELSEIF ( buoyancyRelation .eq. 'ATMOSPHERIC' ) THEN
121                kRef = k
122               ENDIF        
123    
124  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
125              kkey = (ikey-1)*Nr + k              kkey = (ikey-1)*Nr + k
# Line 102  CADJ STORE salt (:,:,k-1,bi,bj) = comlev Line 128  CADJ STORE salt (:,:,k-1,bi,bj) = comlev
128  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
129  C-          Density of K-1 layer (above W(K)) reference to K-1 T-level  C-          Density of K-1 layer (above W(K)) reference to K-1 T-level
130              CALL FIND_RHO(              CALL FIND_RHO(
131       I           bi,bj,iMin,iMax,jMin,jMax,K-1,K-1,eosType,       I           bi,bj,iMin,iMax,jMin,jMax,K-1,KRef,
132       I           theta,salt,       I           theta,salt,
133       O           rhoKm1,       O           rhoKm1,
134       I           myThid )       I           myThid )
# Line 113  CADJ STORE theta(:,:,k,bi,bj) = comlev1_ Line 139  CADJ STORE theta(:,:,k,bi,bj) = comlev1_
139  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
140  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
141              CALL FIND_RHO(              CALL FIND_RHO(
142       I           bi,bj,iMin,iMax,jMin,jMax,K,K-1,eosType,       I           bi,bj,iMin,iMax,jMin,jMax,K,KRef,
143       I           theta,salt,       I           theta,salt,
144       O           rhoK,       O           rhoK,
145       I           myThid )       I           myThid )
# Line 123  CADJ STORE rhoKm1(:,:)  = comlev1_bibj_k Line 149  CADJ STORE rhoKm1(:,:)  = comlev1_bibj_k
149  CADJ STORE rhoK  (:,:)  = comlev1_bibj_k, key = kkey, byte = isbyte  CADJ STORE rhoK  (:,:)  = comlev1_bibj_k, key = kkey, byte = isbyte
150  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
151  C-          Check static stability with layer below and mix as needed.  C-          Check static stability with layer below and mix as needed.
152              CALL CONVECT(  c           CALL CONVECT(
153       I           bi,bj,iMin,iMax,jMin,jMax,K,rhoKm1,rhoK,  c    I           bi,bj,iMin,iMax,jMin,jMax,K,rhoKm1,rhoK,
154       U           ConvectCount,  c    U           ConvectCount,
155       I           myTime,myIter,myThid)  c    I           myTime,myIter,myThid)
156    
157    C-          Pre-calculate mixing weights for interface K
158                CALL CONVECTIVE_WEIGHTS(
159         I           bi,bj,K,rhoKm1,rhoK,
160         O           weightA,weightB,ConvectCount,
161         I           myThid)
162    
163    C-          Convectively mix heat across interface K
164                CALL CONVECTIVELY_MIXTRACER(
165         I                              bi,bj,k,weightA,weightB,
166         U                              theta,
167         I                              myThid)
168    
169    C-          Convectively mix salt across interface K
170                CALL CONVECTIVELY_MIXTRACER(
171         I                              bi,bj,k,weightA,weightB,
172         U                              salt,
173         I                              myThid)
174    
175    #ifdef ALLOW_PASSIVE_TRACER
176    C-          Convectively mix passive tracer across interface K
177                CALL CONVECTIVELY_MIXTRACER(
178         I                              bi,bj,k,weightA,weightB,
179         U                              Tr1,
180         I                              myThid)
181    #endif /* ALLOW_PASSIVE_TRACER */
182    
183    #ifdef ALLOW_PTRACERS
184    C-          Convectively mix passive tracers across interface K
185                IF ( usePTRACERS ) THEN
186                  CALL PTRACERS_CONVECT(
187         I                              bi,bj,k,weightA,weightB,myThid)
188                ENDIF
189    #endif /* ALLOW_PTRACERS */
190    
191  C--       End DO K=1,Nr  C--       End DO K=1,Nr
192            ENDDO            ENDDO

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.15

  ViewVC Help
Powered by ViewVC 1.1.22