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

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

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

revision 1.64 by heimbach, Thu May 1 23:52:24 2008 UTC revision 1.99 by jmc, Thu Jan 27 20:34:53 2011 UTC
# Line 36  C     == Global variables === Line 36  C     == Global variables ===
36  #include "SIZE.h"  #include "SIZE.h"
37  #include "EEPARAMS.h"  #include "EEPARAMS.h"
38  #include "PARAMS.h"  #include "PARAMS.h"
 #include "DYNVARS.h"  
39  #include "GRID.h"  #include "GRID.h"
40    #include "DYNVARS.h"
41  #ifdef ALLOW_TIMEAVE  #ifdef ALLOW_TIMEAVE
42  #include "TIMEAVE_STATV.h"  #include "TIMEAVE_STATV.h"
43  #endif  #endif
# Line 46  C     == Global variables === Line 46  C     == Global variables ===
46  #endif  #endif
47    
48  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
49    # include "AUTODIFF_MYFIELDS.h"
50  # include "tamc.h"  # include "tamc.h"
51  # include "tamc_keys.h"  # include "tamc_keys.h"
52  # include "FFIELDS.h"  # include "FFIELDS.h"
# Line 54  C     == Global variables === Line 55  C     == Global variables ===
55  # ifdef ALLOW_KPP  # ifdef ALLOW_KPP
56  #  include "KPP.h"  #  include "KPP.h"
57  # endif  # endif
58    # ifdef ALLOW_GGL90
59    #  include "GGL90.h"
60    # endif
61  # ifdef ALLOW_GMREDI  # ifdef ALLOW_GMREDI
62  #  include "GMREDI.h"  #  include "GMREDI.h"
63  # endif  # endif
# Line 70  C     == Global variables === Line 74  C     == Global variables ===
74  # ifdef ALLOW_SEAICE  # ifdef ALLOW_SEAICE
75  #  include "SEAICE.h"  #  include "SEAICE.h"
76  # endif  # endif
77    # ifdef ALLOW_SALT_PLUME
78    #  include "SALT_PLUME.h"
79    # endif
80  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
81    
82  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
# Line 90  C     bi, bj        :: tile indices Line 97  C     bi, bj        :: tile indices
97  C     i,j,k         :: loop indices  C     i,j,k         :: loop indices
98        _RL rhoKp1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL rhoKp1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
99        _RL rhoKm1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL rhoKm1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
       _RL rhoK    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)  
100        _RL sigmaX  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)        _RL sigmaX  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
101        _RL sigmaY  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)        _RL sigmaY  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
102        _RL sigmaR  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)        _RL sigmaR  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
# Line 112  C--   dummy statement to end declaration Line 118  C--   dummy statement to end declaration
118  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
119    
120  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
121        IF ( debugLevel .GE. debLevB )        IF (debugMode) CALL DEBUG_ENTER('DO_OCEANIC_PHYS',myThid)
      &     CALL DEBUG_ENTER('DO_OCEANIC_PHYS',myThid)  
122  #endif  #endif
123    
124        doDiagsRho = 0        doDiagsRho = 0
125  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
126        IF ( useDiagnostics .AND. fluidIsWater ) THEN        IF ( useDiagnostics .AND. fluidIsWater ) THEN
127          IF ( DIAGNOSTICS_IS_ON('RHOANOSQ',myThid) .OR.          IF ( DIAGNOSTICS_IS_ON('WRHOMASS',myThid) )
128       &       DIAGNOSTICS_IS_ON('URHOMASS',myThid) .OR.       &       doDiagsRho = doDiagsRho + 1
129       &       DIAGNOSTICS_IS_ON('VRHOMASS',myThid) .OR.          IF ( DIAGNOSTICS_IS_ON('DRHODR  ',myThid) )
130       &       DIAGNOSTICS_IS_ON('WRHOMASS',myThid) .OR.       &       doDiagsRho = doDiagsRho + 2
131       &       DIAGNOSTICS_IS_ON('WRHOMASS',myThid) ) doDiagsRho = 2          IF ( DIAGNOSTICS_IS_ON('MXLDEPTH',myThid) )
132          IF ( doDiagsRho.EQ.0 .AND.       &       doDiagsRho = doDiagsRho + 4
      &       DIAGNOSTICS_IS_ON('MXLDEPTH',myThid) ) doDiagsRho = 1  
         IF ( doDiagsRho.EQ.0 .AND.  
      &       DIAGNOSTICS_IS_ON('DRHODR  ',myThid) ) doDiagsRho = 1  
133        ENDIF        ENDIF
134  #endif /* ALLOW_DIAGNOSTICS */  #endif /* ALLOW_DIAGNOSTICS */
135    
136    #ifdef  ALLOW_OBCS
137          IF (useOBCS) THEN
138    C--   Calculate future values on open boundaries
139    C--   moved before SEAICE_MODEL call since SEAICE_MODEL needs seaice-obcs fields
140    #ifdef ALLOW_DEBUG
141           IF (debugMode) CALL DEBUG_CALL('OBCS_CALC',myThid)
142    #endif
143           CALL OBCS_CALC( myTime+deltaTclock, myIter+1,
144         I                 uVel, vVel, wVel, theta, salt, myThid )
145          ENDIF
146    #endif  /* ALLOW_OBCS */
147    
148    #ifdef ALLOW_ADDFLUID
149          IF ( fluidIsWater ) THEN
150            DO bj=myByLo(myThid),myByHi(myThid)
151             DO bi=myBxLo(myThid),myBxHi(myThid)
152              DO k=1,Nr
153               DO j=1-OLy,sNy+OLy
154                DO i=1-OLx,sNx+OLx
155                 addMass(i,j,k,bi,bj) =  0. _d 0
156                ENDDO
157               ENDDO
158              ENDDO
159             ENDDO
160            ENDDO
161          ENDIF
162    #endif /* ALLOW_ADDFLUID */
163    
164    #ifdef ALLOW_AUTODIFF_TAMC
165    # ifdef ALLOW_SALT_PLUME
166          DO bj=myByLo(myThid),myByHi(myThid)
167           DO bi=myBxLo(myThid),myBxHi(myThid)
168            DO j=1-OLy,sNy+OLy
169             DO i=1-OLx,sNx+OLx
170              saltPlumeDepth(i,j,bi,bj) = 0. _d 0
171              saltPlumeFlux(i,j,bi,bj)  = 0. _d 0
172             ENDDO
173            ENDDO
174           ENDDO
175          ENDDO
176    # endif
177    #endif /* ALLOW_AUTODIFF_TAMC */
178    
179  #ifdef ALLOW_SEAICE  #ifdef ALLOW_SEAICE
180        IF ( useSEAICE ) THEN        IF ( useSEAICE ) THEN
181  # ifdef ALLOW_AUTODIFF_TAMC  # ifdef ALLOW_AUTODIFF_TAMC
182  CADJ STORE atemp,aqh,precip    = comlev1, key = ikey_dynamics  cph-adj-test(
183  CADJ STORE swdown,lwdown       = comlev1, key = ikey_dynamics  CADJ STORE area   = comlev1, key=ikey_dynamics, kind=isbyte
184    CADJ STORE hsnow  = comlev1, key=ikey_dynamics, kind=isbyte
185    CADJ STORE heff   = comlev1, key=ikey_dynamics, kind=isbyte
186    CADJ STORE empmr,qsw,theta   = comlev1, key = ikey_dynamics,
187    CADJ &     kind = isbyte
188    cph-adj-test)
189    CADJ STORE atemp,aqh,precip    = comlev1, key = ikey_dynamics,
190    CADJ &     kind = isbyte
191    CADJ STORE swdown,lwdown       = comlev1, key = ikey_dynamics,
192    CADJ &     kind = isbyte
193  cph# ifdef EXF_READ_EVAP  cph# ifdef EXF_READ_EVAP
194  CADJ STORE evap                = comlev1, key = ikey_dynamics  CADJ STORE evap                = comlev1, key = ikey_dynamics,
195    CADJ &     kind = isbyte
196  cph# endif  cph# endif
197  CADJ STORE uvel,vvel           = comlev1, key = ikey_dynamics  CADJ STORE uvel,vvel           = comlev1, key = ikey_dynamics,
198    CADJ &     kind = isbyte
199    #  ifdef SEAICE_CGRID
200    CADJ STORE stressdivergencex   = comlev1, key = ikey_dynamics,
201    CADJ &     kind = isbyte
202    CADJ STORE stressdivergencey   = comlev1, key = ikey_dynamics,
203    CADJ &     kind = isbyte
204    #  endif
205  #  ifdef SEAICE_ALLOW_DYNAMICS  #  ifdef SEAICE_ALLOW_DYNAMICS
206  CADJ STORE uice                = comlev1, key = ikey_dynamics  CADJ STORE uice                = comlev1, key = ikey_dynamics,
207  CADJ STORE vice                = comlev1, key = ikey_dynamics  CADJ &     kind = isbyte
208    CADJ STORE vice                = comlev1, key = ikey_dynamics,
209    CADJ &     kind = isbyte
210  #   ifdef SEAICE_ALLOW_EVP  #   ifdef SEAICE_ALLOW_EVP
211  CADJ STORE seaice_sigma1       = comlev1, key = ikey_dynamics  CADJ STORE seaice_sigma1       = comlev1, key = ikey_dynamics,
212  CADJ STORE seaice_sigma2       = comlev1, key = ikey_dynamics  CADJ &     kind = isbyte
213  CADJ STORE seaice_sigma12      = comlev1, key = ikey_dynamics  CADJ STORE seaice_sigma2       = comlev1, key = ikey_dynamics,
214    CADJ &     kind = isbyte
215    CADJ STORE seaice_sigma12      = comlev1, key = ikey_dynamics,
216    CADJ &     kind = isbyte
217  #   endif  #   endif
218  #  endif  #  endif
219  #  ifdef SEAICE_SALINITY  #  ifdef SEAICE_SALINITY
220  CADJ STORE salt                = comlev1, key = ikey_dynamics  CADJ STORE salt                = comlev1, key = ikey_dynamics,
221    CADJ &     kind = isbyte
222  #  endif  #  endif
223  #  ifdef ATMOSPHERIC_LOADING  #  ifdef ATMOSPHERIC_LOADING
224  CADJ STORE pload               = comlev1, key = ikey_dynamics  CADJ STORE pload               = comlev1, key = ikey_dynamics,
225  CADJ STORE siceload            = comlev1, key = ikey_dynamics  CADJ &     kind = isbyte
226    CADJ STORE siceload            = comlev1, key = ikey_dynamics,
227    CADJ &     kind = isbyte
228  #  endif  #  endif
229  #  ifdef NONLIN_FRSURF  #  ifdef NONLIN_FRSURF
230  CADJ STORE recip_hfacc         = comlev1, key = ikey_dynamics  CADJ STORE recip_hfacc         = comlev1, key = ikey_dynamics,
231    CADJ &     kind = isbyte
232  #  endif  #  endif
233    #  ifdef ANNUAL_BALANCE
234    CADJ STORE balance_itcount     = comlev1, key = ikey_dynamics,
235    CADJ &     kind = isbyte
236    #  endif /* ANNUAL_BALANCE */
237  # endif  # endif
238  # ifdef ALLOW_DEBUG  # ifdef ALLOW_DEBUG
239          IF ( debugLevel .GE. debLevB )          IF (debugMode) CALL DEBUG_CALL('SEAICE_MODEL',myThid)
      &    CALL DEBUG_CALL('SEAICE_MODEL',myThid)  
240  # endif  # endif
241          CALL TIMER_START('SEAICE_MODEL    [DO_OCEANIC_PHYS]', myThid)          CALL TIMER_START('SEAICE_MODEL    [DO_OCEANIC_PHYS]', myThid)
242          CALL SEAICE_MODEL( myTime, myIter, myThid )          CALL SEAICE_MODEL( myTime, myIter, myThid )
# Line 174  CADJ STORE recip_hfacc         = comlev1 Line 248  CADJ STORE recip_hfacc         = comlev1
248  #endif /* ALLOW_SEAICE */  #endif /* ALLOW_SEAICE */
249    
250  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
251  CADJ STORE sst, sss           = comlev1, key = ikey_dynamics  CADJ STORE sst, sss           = comlev1, key = ikey_dynamics,
252  CADJ STORE qsw                = comlev1, key = ikey_dynamics  CADJ &     kind = isbyte
253    CADJ STORE qsw                = comlev1, key = ikey_dynamics,
254    CADJ &     kind = isbyte
255  # ifdef ALLOW_SEAICE  # ifdef ALLOW_SEAICE
256  CADJ STORE area               = comlev1, key = ikey_dynamics  CADJ STORE area               = comlev1, key = ikey_dynamics,
257    CADJ &     kind = isbyte
258  # endif  # endif
259  #endif  #endif
260    
261  #if (defined ALLOW_THSICE) && !(defined ALLOW_ATM2D)  #if (defined ALLOW_THSICE) && !(defined ALLOW_ATM2D)
262        IF ( useThSIce .AND. fluidIsWater ) THEN        IF ( useThSIce .AND. fluidIsWater ) THEN
263  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
264          IF ( debugLevel .GE. debLevB )          IF (debugMode) CALL DEBUG_CALL('THSICE_MAIN',myThid)
      &    CALL DEBUG_CALL('THSICE_MAIN',myThid)  
265  #endif  #endif
266  C--     Step forward Therm.Sea-Ice variables  C--     Step forward Therm.Sea-Ice variables
267  C       and modify forcing terms including effects from ice  C       and modify forcing terms including effects from ice
# Line 196  C       and modify forcing terms includi Line 272  C       and modify forcing terms includi
272  #endif /* ALLOW_THSICE */  #endif /* ALLOW_THSICE */
273    
274  #ifdef ALLOW_SHELFICE  #ifdef ALLOW_SHELFICE
275    # ifdef ALLOW_AUTODIFF_TAMC
276    CADJ STORE salt, theta = comlev1, key = ikey_dynamics,
277    CADJ &     kind = isbyte
278    # endif
279        IF ( useShelfIce .AND. fluidIsWater ) THEN        IF ( useShelfIce .AND. fluidIsWater ) THEN
280  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
281          IF ( debugLevel .GE. debLevB )         IF (debugMode) CALL DEBUG_CALL('SHELFICE_THERMODYNAMICS',myThid)
      &    CALL DEBUG_CALL('SHELFICE_THERMODYNAMICS',myThid)  
282  #endif  #endif
283  C     compute temperature and (virtual) salt flux at the  C     compute temperature and (virtual) salt flux at the
284  C     shelf-ice ocean interface  C     shelf-ice ocean interface
# Line 211  C     shelf-ice ocean interface Line 290  C     shelf-ice ocean interface
290        ENDIF        ENDIF
291  #endif /* ALLOW_SHELFICE */  #endif /* ALLOW_SHELFICE */
292    
293    #ifdef ALLOW_ICEFRONT
294          IF ( useICEFRONT .AND. fluidIsWater ) THEN
295    #ifdef ALLOW_DEBUG
296           IF (debugMode) CALL DEBUG_CALL('ICEFRONT_THERMODYNAMICS',myThid)
297    #endif
298    C     compute temperature and (virtual) salt flux at the
299    C     ice-front ocean interface
300           CALL TIMER_START('ICEFRONT_THERMODYNAMICS [DO_OCEANIC_PHYS]',
301         &       myThid)
302           CALL ICEFRONT_THERMODYNAMICS( myTime, myIter, myThid )
303           CALL TIMER_STOP( 'ICEFRONT_THERMODYNAMICS [DO_OCEANIC_PHYS]',
304         &      myThid)
305          ENDIF
306    #endif /* ALLOW_ICEFRONT */
307    
308  C--   Freeze water at the surface  C--   Freeze water at the surface
309  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
310  CADJ STORE theta = comlev1, key = ikey_dynamics  CADJ STORE theta = comlev1, key = ikey_dynamics,
311    CADJ &     kind = isbyte
312  #endif  #endif
313        IF ( allowFreezing        IF ( allowFreezing ) THEN
      &                   .AND. .NOT. useSEAICE  
      &                   .AND. .NOT. useThSIce ) THEN  
314          CALL FREEZE_SURFACE(  myTime, myIter, myThid )          CALL FREEZE_SURFACE(  myTime, myIter, myThid )
315        ENDIF        ENDIF
316    
# Line 232  C jmc: do not know precisely where to pu Line 325  C jmc: do not know precisely where to pu
325  #ifdef ALLOW_BALANCE_FLUXES  #ifdef ALLOW_BALANCE_FLUXES
326  C     balance fluxes  C     balance fluxes
327        IF ( balanceEmPmR )        IF ( balanceEmPmR )
328       &        CALL REMOVE_MEAN_RS( 1, EmPmR, maskH, maskH, rA, drF,       &      CALL REMOVE_MEAN_RS( 1, EmPmR, maskInC, maskInC, rA, drF,
329       &        'EmPmR', myTime, myThid )       &        'EmPmR', myTime, myThid )
330        IF ( balanceQnet )        IF ( balanceQnet )
331       &        CALL REMOVE_MEAN_RS( 1, Qnet,  maskH, maskH, rA, drF,       &      CALL REMOVE_MEAN_RS( 1, Qnet,  maskInC, maskInC, rA, drF,
332       &        'Qnet ', myTime, myThid )       &        'Qnet ', myTime, myThid )
333  #endif /* ALLOW_BALANCE_FLUXES */  #endif /* ALLOW_BALANCE_FLUXES */
334    
# Line 273  C     just ensure that all memory refere Line 366  C     just ensure that all memory refere
366  C     point numbers. This prevents spurious hardware signals due to  C     point numbers. This prevents spurious hardware signals due to
367  C     uninitialised but inert locations.  C     uninitialised but inert locations.
368    
369    #ifdef ALLOW_AUTODIFF_TAMC
370          DO j=1-OLy,sNy+OLy          DO j=1-OLy,sNy+OLy
371           DO i=1-OLx,sNx+OLx           DO i=1-OLx,sNx+OLx
           rhoK   (i,j)   = 0. _d 0  
372            rhoKm1 (i,j)   = 0. _d 0            rhoKm1 (i,j)   = 0. _d 0
373            rhoKp1 (i,j)   = 0. _d 0            rhoKp1 (i,j)   = 0. _d 0
374           ENDDO           ENDDO
375          ENDDO          ENDDO
376    #endif /* ALLOW_AUTODIFF_TAMC */
377    
378          DO k=1,Nr          DO k=1,Nr
379           DO j=1-OLy,sNy+OLy           DO j=1-OLy,sNy+OLy
380            DO i=1-OLx,sNx+OLx            DO i=1-OLx,sNx+OLx
381  C This is currently also used by IVDC and Diagnostics  C This is currently used by GMRedi, IVDC, MXL-depth  and Diagnostics
382             sigmaX(i,j,k) = 0. _d 0             sigmaX(i,j,k) = 0. _d 0
383             sigmaY(i,j,k) = 0. _d 0             sigmaY(i,j,k) = 0. _d 0
384             sigmaR(i,j,k) = 0. _d 0             sigmaR(i,j,k) = 0. _d 0
385  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
386  cph all the following init. are necessary for TAF  cph all the following init. are necessary for TAF
387  cph although some of these are re-initialised later.  cph although some of these are re-initialised later.
388    c          rhoInSitu(i,j,k,bi,bj) = 0.
389             IVDConvCount(i,j,k,bi,bj) = 0.             IVDConvCount(i,j,k,bi,bj) = 0.
390  # ifdef ALLOW_GMREDI  # ifdef ALLOW_GMREDI
391             Kwx(i,j,k,bi,bj)  = 0. _d 0             Kwx(i,j,k,bi,bj)  = 0. _d 0
# Line 316  cph although some of these are re-initia Line 411  cph although some of these are re-initia
411             KPPdiffKzS(i,j,k,bi,bj)  = 0. _d 0             KPPdiffKzS(i,j,k,bi,bj)  = 0. _d 0
412             KPPdiffKzT(i,j,k,bi,bj)  = 0. _d 0             KPPdiffKzT(i,j,k,bi,bj)  = 0. _d 0
413  # endif /* ALLOW_KPP */  # endif /* ALLOW_KPP */
414    # ifdef ALLOW_GGL90
415               GGL90viscArU(i,j,k,bi,bj)  = 0. _d 0
416               GGL90viscArV(i,j,k,bi,bj)  = 0. _d 0
417               GGL90diffKr(i,j,k,bi,bj)  = 0. _d 0
418    # endif /* ALLOW_GGL90 */
419  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
420            ENDDO            ENDDO
421           ENDDO           ENDDO
# Line 327  cph although some of these are re-initia Line 427  cph although some of these are re-initia
427          jMax = sNy+OLy          jMax = sNy+OLy
428    
429  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
430  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=itdkey,
431  CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte  CADJ &     kind = isbyte
432    CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=itdkey,
433    CADJ &     kind = isbyte
434  CADJ STORE totphihyd(:,:,:,bi,bj)  CADJ STORE totphihyd(:,:,:,bi,bj)
435  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte  CADJ &     = comlev1_bibj, key=itdkey,
436    CADJ &     kind = isbyte
437  # ifdef ALLOW_KPP  # ifdef ALLOW_KPP
438  CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte  CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey,
439  CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte  CADJ &     kind = isbyte
440    CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey,
441    CADJ &     kind = isbyte
442  # endif  # endif
443  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
444    
445  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
446          IF ( debugLevel .GE. debLevB )          IF (debugMode) CALL DEBUG_MSG('ENTERING UPWARD K LOOP',myThid)
      &    CALL DEBUG_MSG('ENTERING UPWARD K LOOP',myThid)  
447  #endif  #endif
448    
449  C--     Start of diagnostic loop  C--     Start of diagnostic loop
# Line 348  C--     Start of diagnostic loop Line 452  C--     Start of diagnostic loop
452  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
453  C? Patrick, is this formula correct now that we change the loop range?  C? Patrick, is this formula correct now that we change the loop range?
454  C? Do we still need this?  C? Do we still need this?
455  cph kkey formula corrected.  cph kkey formula corrected.
456  cph Needed for rhoK, rhoKm1, in the case useGMREDI.  cph Needed for rhoK, rhoKm1, in the case useGMREDI.
457           kkey = (itdkey-1)*Nr + k            kkey = (itdkey-1)*Nr + k
458  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
459    
460  C--       Calculate gradients of potential density for isoneutral  C--   Always compute density (stored in common block) here; even when it is not
461  C         slope terms (e.g. GM/Redi tensor or IVDC diffusivity)  C     needed here, will be used anyway in calc_phi_hyd (data flow easier this way)
           IF ( useGMRedi .OR. (k.GT.1 .AND. ivdc_kappa.NE.0.)  
      &         .OR. useSALT_PLUME .OR. doDiagsRho.GE.1 ) THEN  
462  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
463              IF ( debugLevel .GE. debLevB )            IF (debugMode) CALL DEBUG_CALL('FIND_RHO_2D',myThid)
      &       CALL DEBUG_CALL('FIND_RHO',myThid)  
464  #endif  #endif
465  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
466  CADJ STORE theta(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte            IF ( fluidIsWater ) THEN
467  CADJ STORE salt (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte  CADJ STORE theta(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey,
468    CADJ &     kind = isbyte
469    CADJ STORE salt(:,:,k,bi,bj)  = comlev1_bibj_k, key=kkey,
470    CADJ &     kind = isbyte
471    #endif /* ALLOW_AUTODIFF_TAMC */
472    #ifdef ALLOW_DOWN_SLOPE
473              IF ( useDOWN_SLOPE ) THEN
474                CALL DWNSLP_CALC_RHO(
475         I                  theta, salt,
476         O                  rhoInSitu(1-OLx,1-OLy,k,bi,bj),
477         I                  k, bi, bj, myTime, myIter, myThid )
478              ELSE
479    #endif /* ALLOW_DOWN_SLOPE */
480                CALL FIND_RHO_2D(
481         I                iMin, iMax, jMin, jMax, k,
482         I                theta(1-OLx,1-OLy,k,bi,bj),
483         I                salt (1-OLx,1-OLy,k,bi,bj),
484         O                rhoInSitu(1-OLx,1-OLy,k,bi,bj),
485         I                k, bi, bj, myThid )
486    #ifdef ALLOW_DOWN_SLOPE
487              ENDIF
488    #endif /* ALLOW_DOWN_SLOPE */
489    #ifdef ALLOW_AUTODIFF_TAMC
490              ELSE
491    C-        fluid is not water:
492               DO j=1-OLy,sNy+OLy
493                DO i=1-OLx,sNx+OLx
494                  rhoInSitu(i,j,k,bi,bj) = 0.
495                ENDDO
496               ENDDO
497              ENDIF
498  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
             CALL FIND_RHO(  
      I        bi, bj, iMin, iMax, jMin, jMax, k, k,  
      I        theta, salt,  
      O        rhoK,  
      I        myThid )  
499    
500    C--       Calculate gradients of potential density for isoneutral
501    C         slope terms (e.g. GM/Redi tensor or IVDC diffusivity)
502              IF ( useGMRedi .OR. (k.GT.1 .AND. ivdc_kappa.NE.0.)
503         &         .OR. useSALT_PLUME .OR. doDiagsRho.GE.1 ) THEN
504              IF (k.GT.1) THEN              IF (k.GT.1) THEN
505  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
506  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,
507  CADJ STORE salt (:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte  CADJ &     kind = isbyte
508  #endif /* ALLOW_AUTODIFF_TAMC */  CADJ STORE salt (:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey,
509               CALL FIND_RHO(  CADJ &     kind = isbyte
510       I        bi, bj, iMin, iMax, jMin, jMax, k-1, k,  CADJ STORE rhokm1 (bi,bj)       = comlev1_bibj_k, key=kkey,
511       I        theta, salt,  CADJ &     kind = isbyte
512       O        rhoKm1,  #endif /* ALLOW_AUTODIFF_TAMC */
513       I        myThid )               CALL FIND_RHO_2D(
514         I                 iMin, iMax, jMin, jMax, k,
515         I                 theta(1-OLx,1-OLy,k-1,bi,bj),
516         I                 salt (1-OLx,1-OLy,k-1,bi,bj),
517         O                 rhoKm1,
518         I                 k-1, bi, bj, myThid )
519              ENDIF              ENDIF
520  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
521              IF ( debugLevel .GE. debLevB )              IF (debugMode) CALL DEBUG_CALL('GRAD_SIGMA',myThid)
      &       CALL DEBUG_CALL('GRAD_SIGMA',myThid)  
522  #endif  #endif
523  cph Avoid variable aliasing for adjoint !!!  cph Avoid variable aliasing for adjoint !!!
524              DO j=jMin,jMax              DO j=jMin,jMax
525               DO i=iMin,iMax               DO i=iMin,iMax
526                rhoKp1(i,j) = rhoK(i,j)                rhoKp1(i,j) = rhoInSitu(i,j,k,bi,bj)
527               ENDDO               ENDDO
528              ENDDO              ENDDO
529              CALL GRAD_SIGMA(              CALL GRAD_SIGMA(
530       I             bi, bj, iMin, iMax, jMin, jMax, k,       I             bi, bj, iMin, iMax, jMin, jMax, k,
531       I             rhoK, rhoKm1, rhoKp1,       I             rhoInSitu(1-OLx,1-OLy,k,bi,bj), rhoKm1, rhoKp1,
532       O             sigmaX, sigmaY, sigmaR,       O             sigmaX, sigmaY, sigmaR,
533       I             myThid )       I             myThid )
534    #ifdef ALLOW_AUTODIFF_TAMC
535    #ifdef GMREDI_WITH_STABLE_ADJOINT
536    cgf zero out adjoint fields to stabilize pkg/gmredi adjoint
537    cgf -> cuts adjoint dependency from slope to state
538                CALL ZERO_ADJ_LOC( Nr, sigmaX, myThid)
539                CALL ZERO_ADJ_LOC( Nr, sigmaY, myThid)
540                CALL ZERO_ADJ_LOC( Nr, sigmaR, myThid)
541    #endif
542    #endif /* ALLOW_AUTODIFF_TAMC */
543            ENDIF            ENDIF
544    
545  C--       Implicit Vertical Diffusion for Convection  C--       Implicit Vertical Diffusion for Convection
546  c ==> should use sigmaR !!!  c ==> should use sigmaR !!!
547            IF (k.GT.1 .AND. ivdc_kappa.NE.0.) THEN            IF (k.GT.1 .AND. ivdc_kappa.NE.0.) THEN
548  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
549              IF ( debugLevel .GE. debLevB )              IF (debugMode) CALL DEBUG_CALL('CALC_IVDC',myThid)
      &       CALL DEBUG_CALL('CALC_IVDC',myThid)  
550  #endif  #endif
551              CALL CALC_IVDC(              CALL CALC_IVDC(
552       I        bi, bj, iMin, iMax, jMin, jMax, k,       I        bi, bj, iMin, iMax, jMin, jMax, k,
553       I        rhoKm1, rhoK,       I        rhoKm1, rhoInSitu(1-OLx,1-OLy,k,bi,bj),
554       I        myTime, myIter, myThid)       I        myTime, myIter, myThid)
555            ENDIF            ENDIF
556    
557  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
558            IF ( doDiagsRho.GE.2 ) THEN            IF ( MOD(doDiagsRho,2).EQ.1 ) THEN
559              CALL DIAGS_RHO( k, bi, bj,              CALL DIAGS_RHO_L( k, bi, bj,
560       I                      rhoK, rhoKm1,       I                        rhoInSitu(1-OLx,1-OLy,k,bi,bj),
561       I                      myTime, myIter, myThid)       I                        rhoKm1, wVel,
562         I                        myTime, myIter, myThid )
563            ENDIF            ENDIF
564  #endif  #endif
565    
# Line 424  C--     end of diagnostic k loop (Nr:1) Line 567  C--     end of diagnostic k loop (Nr:1)
567          ENDDO          ENDDO
568    
569  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
570  CADJ STORE IVDConvCount(:,:,:,bi,bj)  CADJ STORE IVDConvCount(:,:,:,bi,bj)
571  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte  CADJ &     = comlev1_bibj, key=itdkey,
572    CADJ &     kind = isbyte
573  #endif  #endif
574    
575  C--     Diagnose Mixed Layer Depth:  C--     Diagnose Mixed Layer Depth:
576          IF ( useGMRedi .OR. doDiagsRho.GE.1 ) THEN          IF ( useGMRedi .OR. doDiagsRho.GE.4 ) THEN
577            CALL CALC_OCE_MXLAYER( rhoK, sigmaR,            CALL CALC_OCE_MXLAYER(
578       &              bi, bj, myTime, myIter, myThid )       I              rhoInSitu(1-OLx,1-OLy,1,bi,bj), sigmaR,
579         I              bi, bj, myTime, myIter, myThid )
580          ENDIF          ENDIF
581    
582  #ifdef ALLOW_SALT_PLUME  #ifdef ALLOW_SALT_PLUME
583          IF ( useSALT_PLUME ) THEN          IF ( useSALT_PLUME ) THEN
584            CALL SALT_PLUME_CALC_DEPTH( rhoK, sigmaR,            CALL SALT_PLUME_CALC_DEPTH(
585       &              bi, bj, myTime, myIter, myThid )       I              rhoInSitu(1-OLx,1-OLy,1,bi,bj), sigmaR,
586         I              bi, bj, myTime, myIter, myThid )
587          ENDIF          ENDIF
588  #endif /* ALLOW_SALT_PLUME */  #endif /* ALLOW_SALT_PLUME */
589    
590  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
591          IF ( doDiagsRho.GE.1 ) THEN          IF ( MOD(doDiagsRho,4).GE.2 ) THEN
592            CALL DIAGNOSTICS_FILL (sigmaR, 'DRHODR  ', 0, Nr,            CALL DIAGNOSTICS_FILL (sigmaR, 'DRHODR  ', 0, Nr,
593       &         2, bi, bj, myThid)       &         2, bi, bj, myThid)
594          ENDIF          ENDIF
# Line 451  C--     Diagnose Mixed Layer Depth: Line 597  C--     Diagnose Mixed Layer Depth:
597  C--     Determines forcing terms based on external fields  C--     Determines forcing terms based on external fields
598  C       relaxation terms, etc.  C       relaxation terms, etc.
599  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
600          IF ( debugLevel .GE. debLevB )          IF (debugMode) CALL DEBUG_CALL('EXTERNAL_FORCING_SURF',myThid)
      &    CALL DEBUG_CALL('EXTERNAL_FORCING_SURF',myThid)  
601  #endif  #endif
602  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
603  CADJ STORE EmPmR(:,:,bi,bj)  CADJ STORE EmPmR(:,:,bi,bj)
604  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte  CADJ &     = comlev1_bibj, key=itdkey,
605    CADJ &     kind = isbyte
606  # ifdef EXACT_CONSERV  # ifdef EXACT_CONSERV
607  CADJ STORE PmEpR(:,:,bi,bj)  CADJ STORE PmEpR(:,:,bi,bj)
608  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte  CADJ &     = comlev1_bibj, key=itdkey,
609    CADJ &     kind = isbyte
610  # endif  # endif
611  # ifdef NONLIN_FRSURF  # ifdef NONLIN_FRSURF
612  CADJ STORE hFac_surfC(:,:,bi,bj)  CADJ STORE hFac_surfC(:,:,bi,bj)
613  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte  CADJ &     = comlev1_bibj, key=itdkey,
614    CADJ &     kind = isbyte
615  CADJ STORE recip_hFacC(:,:,:,bi,bj)  CADJ STORE recip_hFacC(:,:,:,bi,bj)
616  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte  CADJ &     = comlev1_bibj, key=itdkey,
617  # endif  CADJ &     kind = isbyte
618    #  if (defined (ALLOW_PTRACERS))
619    CADJ STORE surfaceForcingS(:,:,bi,bj)   = comlev1_bibj, key=itdkey,
620    CADJ &     kind = isbyte
621    CADJ STORE surfaceForcingT(:,:,bi,bj)   = comlev1_bibj, key=itdkey,
622    CADJ &     kind = isbyte
623    #  endif /* ALLOW_PTRACERS */
624    # endif /* NONLIN_FRSURF */
625  #endif  #endif
626          CALL EXTERNAL_FORCING_SURF(          CALL EXTERNAL_FORCING_SURF(
627       I             bi, bj, iMin, iMax, jMin, jMax,       I             bi, bj, iMin, iMax, jMin, jMax,
# Line 475  CADJ &     = comlev1_bibj, key=itdkey, b Line 630  CADJ &     = comlev1_bibj, key=itdkey, b
630  # ifdef EXACT_CONSERV  # ifdef EXACT_CONSERV
631  cph-test  cph-test
632  cphCADJ STORE PmEpR(:,:,bi,bj)  cphCADJ STORE PmEpR(:,:,bi,bj)
633  cphCADJ &     = comlev1_bibj, key=itdkey, byte=isbyte  cphCADJ &     = comlev1_bibj, key=itdkey,
634    cphCADJ &     kind = isbyte
635  # endif  # endif
636  #endif  #endif
637    
638  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
639  cph needed for KPP  cph needed for KPP
640  CADJ STORE surfaceForcingU(:,:,bi,bj)  CADJ STORE surfaceForcingU(:,:,bi,bj)
641  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte  CADJ &     = comlev1_bibj, key=itdkey,
642    CADJ &     kind = isbyte
643  CADJ STORE surfaceForcingV(:,:,bi,bj)  CADJ STORE surfaceForcingV(:,:,bi,bj)
644  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte  CADJ &     = comlev1_bibj, key=itdkey,
645    CADJ &     kind = isbyte
646  CADJ STORE surfaceForcingS(:,:,bi,bj)  CADJ STORE surfaceForcingS(:,:,bi,bj)
647  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte  CADJ &     = comlev1_bibj, key=itdkey,
648    CADJ &     kind = isbyte
649  CADJ STORE surfaceForcingT(:,:,bi,bj)  CADJ STORE surfaceForcingT(:,:,bi,bj)
650  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte  CADJ &     = comlev1_bibj, key=itdkey,
651    CADJ &     kind = isbyte
652  CADJ STORE surfaceForcingTice(:,:,bi,bj)  CADJ STORE surfaceForcingTice(:,:,bi,bj)
653  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte  CADJ &     = comlev1_bibj, key=itdkey,
654    CADJ &     kind = isbyte
655  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
656    
657  #ifdef  ALLOW_KPP  #ifdef  ALLOW_KPP
658  C--     Compute KPP mixing coefficients  C--     Compute KPP mixing coefficients
659          IF (useKPP) THEN          IF (useKPP) THEN
660  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
661            IF ( debugLevel .GE. debLevB )            IF (debugMode) CALL DEBUG_CALL('KPP_CALC',myThid)
      &     CALL DEBUG_CALL('KPP_CALC',myThid)  
662  #endif  #endif
663              CALL TIMER_START('KPP_CALC [DO_OCEANIC_PHYS]', myThid)
664            CALL KPP_CALC(            CALL KPP_CALC(
665       I                  bi, bj, myTime, myIter, myThid )       I                  bi, bj, myTime, myIter, myThid )
666              CALL TIMER_STOP ('KPP_CALC [DO_OCEANIC_PHYS]', myThid)
667  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
668          ELSE          ELSE
669            CALL KPP_CALC_DUMMY(            CALL KPP_CALC_DUMMY(
# Line 515  C--     Compute KPP mixing coefficients Line 677  C--     Compute KPP mixing coefficients
677  C--     Compute PP81 mixing coefficients  C--     Compute PP81 mixing coefficients
678          IF (usePP81) THEN          IF (usePP81) THEN
679  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
680            IF ( debugLevel .GE. debLevB )            IF (debugMode) CALL DEBUG_CALL('PP81_CALC',myThid)
      &     CALL DEBUG_CALL('PP81_CALC',myThid)  
681  #endif  #endif
682            CALL PP81_CALC(            CALL PP81_CALC(
683       I                  bi, bj, myTime, myThid )       I                  bi, bj, myTime, myThid )
# Line 527  C--     Compute PP81 mixing coefficients Line 688  C--     Compute PP81 mixing coefficients
688  C--     Compute MY82 mixing coefficients  C--     Compute MY82 mixing coefficients
689          IF (useMY82) THEN          IF (useMY82) THEN
690  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
691            IF ( debugLevel .GE. debLevB )            IF (debugMode) CALL DEBUG_CALL('MY82_CALC',myThid)
      &     CALL DEBUG_CALL('MY82_CALC',myThid)  
692  #endif  #endif
693            CALL MY82_CALC(            CALL MY82_CALC(
694       I                  bi, bj, myTime, myThid )       I                  bi, bj, myTime, myThid )
# Line 536  C--     Compute MY82 mixing coefficients Line 696  C--     Compute MY82 mixing coefficients
696  #endif /* ALLOW_MY82 */  #endif /* ALLOW_MY82 */
697    
698  #ifdef  ALLOW_GGL90  #ifdef  ALLOW_GGL90
699    #ifdef ALLOW_AUTODIFF_TAMC
700    CADJ STORE GGL90TKE (:,:,:,bi,bj) = comlev1_bibj, key=itdkey,
701    CADJ &     kind = isbyte
702    #endif /* ALLOW_AUTODIFF_TAMC */
703  C--     Compute GGL90 mixing coefficients  C--     Compute GGL90 mixing coefficients
704          IF (useGGL90) THEN          IF (useGGL90) THEN
705  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
706            IF ( debugLevel .GE. debLevB )            IF (debugMode) CALL DEBUG_CALL('GGL90_CALC',myThid)
      &     CALL DEBUG_CALL('GGL90_CALC',myThid)  
707  #endif  #endif
708              CALL TIMER_START('GGL90_CALC [DO_OCEANIC_PHYS]', myThid)
709            CALL GGL90_CALC(            CALL GGL90_CALC(
710       I                  bi, bj, myTime, myThid )       I                  bi, bj, myTime, myIter, myThid )
711              CALL TIMER_STOP ('GGL90_CALC [DO_OCEANIC_PHYS]', myThid)
712          ENDIF          ENDIF
713  #endif /* ALLOW_GGL90 */  #endif /* ALLOW_GGL90 */
714    
# Line 557  C--     Compute GGL90 mixing coefficient Line 722  C--     Compute GGL90 mixing coefficient
722          ENDIF          ENDIF
723  #endif /* ALLOW_TIMEAVE */  #endif /* ALLOW_TIMEAVE */
724    
725  #ifdef  ALLOW_GMREDI  #ifdef ALLOW_GMREDI
726  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
727  # ifndef GM_EXCLUDE_CLIPPING  # ifndef GM_EXCLUDE_CLIPPING
728  cph storing here is needed only for one GMREDI_OPTIONS:  cph storing here is needed only for one GMREDI_OPTIONS:
729  cph define GM_BOLUS_ADVEC  cph define GM_BOLUS_ADVEC
730  cph keep it although TAF says you dont need to.  cph keep it although TAF says you dont need to.
731  cph but I've avoided the #ifdef for now, in case more things change  cph but I have avoided the #ifdef for now, in case more things change
732  CADJ STORE sigmaX(:,:,:)        = comlev1_bibj, key=itdkey, byte=isbyte  CADJ STORE sigmaX(:,:,:)        = comlev1_bibj, key=itdkey,
733  CADJ STORE sigmaY(:,:,:)        = comlev1_bibj, key=itdkey, byte=isbyte  CADJ &     kind = isbyte
734  CADJ STORE sigmaR(:,:,:)        = comlev1_bibj, key=itdkey, byte=isbyte  CADJ STORE sigmaY(:,:,:)        = comlev1_bibj, key=itdkey,
735    CADJ &     kind = isbyte
736    CADJ STORE sigmaR(:,:,:)        = comlev1_bibj, key=itdkey,
737    CADJ &     kind = isbyte
738  # endif  # endif
739  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
740    
741  C--     Calculate iso-neutral slopes for the GM/Redi parameterisation  C--     Calculate iso-neutral slopes for the GM/Redi parameterisation
742          IF (useGMRedi) THEN          IF (useGMRedi) THEN
743  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
744            IF ( debugLevel .GE. debLevB )            IF (debugMode) CALL DEBUG_CALL('GMREDI_CALC_TENSOR',myThid)
      &     CALL DEBUG_CALL('GMREDI_CALC_TENSOR',myThid)  
745  #endif  #endif
746            CALL GMREDI_CALC_TENSOR(            CALL GMREDI_CALC_TENSOR(
 c    I             bi, bj, iMin, iMax, jMin, jMax,  
 c    I             sigmaX, sigmaY, sigmaR,  
 c    I             myThid )  
747       I             iMin, iMax, jMin, jMax,       I             iMin, iMax, jMin, jMax,
748       I             sigmaX, sigmaY, sigmaR,       I             sigmaX, sigmaY, sigmaR,
749       I             bi, bj, myTime, myIter, myThid )       I             bi, bj, myTime, myIter, myThid )
750  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
751          ELSE          ELSE
752            CALL GMREDI_CALC_TENSOR_DUMMY(            CALL GMREDI_CALC_TENSOR_DUMMY(
 c    I             bi, bj, iMin, iMax, jMin, jMax,  
 c    I             sigmaX, sigmaY, sigmaR,  
 c    I             myThid )  
753       I             iMin, iMax, jMin, jMax,       I             iMin, iMax, jMin, jMax,
754       I             sigmaX, sigmaY, sigmaR,       I             sigmaX, sigmaY, sigmaR,
755       I             bi, bj, myTime, myIter, myThid )       I             bi, bj, myTime, myIter, myThid )
756  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
757          ENDIF          ENDIF
758  #endif  /* ALLOW_GMREDI */  #endif /* ALLOW_GMREDI */
759    
760    #ifdef ALLOW_DOWN_SLOPE
761            IF ( useDOWN_SLOPE ) THEN
762    C--     Calculate Downsloping Flow for Down_Slope parameterization
763             IF ( usingPCoords ) THEN
764              CALL DWNSLP_CALC_FLOW(
765         I                bi, bj, kSurfC, rhoInSitu,
766         I                myTime, myIter, myThid )
767             ELSE
768              CALL DWNSLP_CALC_FLOW(
769         I                bi, bj, kLowC, rhoInSitu,
770         I                myTime, myIter, myThid )
771             ENDIF
772            ENDIF
773    #endif /* ALLOW_DOWN_SLOPE */
774    
775  #ifndef ALLOW_AUTODIFF_TAMC  #ifndef ALLOW_AUTODIFF_TAMC
776  C---  if fluid Is Water: end  C---  if fluid Is Water: end
777          ENDIF          ENDIF
778  #endif  #endif
779    
780  #ifdef  ALLOW_OBCS  #ifdef ALLOW_MYPACKAGE
781  C--     Calculate future values on open boundaries          IF ( useMYPACKAGE ) THEN
782          IF (useOBCS) THEN           CALL MYPACKAGE_CALC_RHS(
783  #ifdef ALLOW_DEBUG       I        bi, bj, myTime, myIter, myThid )
           IF ( debugLevel .GE. debLevB )  
      &     CALL DEBUG_CALL('OBCS_CALC',myThid)  
 #endif  
           CALL OBCS_CALC( bi, bj, myTime+deltaTclock, myIter+1,  
      I            uVel, vVel, wVel, theta, salt,  
      I            myThid )  
784          ENDIF          ENDIF
785  #endif  /* ALLOW_OBCS */  #endif /* ALLOW_MYPACKAGE */
786    
787  C--   end bi,bj loops.  C--   end bi,bj loops.
788         ENDDO         ENDDO
789        ENDDO        ENDDO
790    
791  #ifdef  ALLOW_KPP  #ifdef ALLOW_GMREDI
792          IF ( useGMRedi ) THEN
793            CALL GMREDI_DO_EXCH( myTime, myIter, myThid )
794          ENDIF
795    #endif /* ALLOW_GMREDI */
796    
797    #ifdef ALLOW_KPP
798        IF (useKPP) THEN        IF (useKPP) THEN
799          CALL KPP_DO_EXCH( myThid )          CALL KPP_DO_EXCH( myThid )
800        ENDIF        ENDIF
801  #endif  /* ALLOW_KPP */  #endif /* ALLOW_KPP */
802    
803  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
804        IF ( fluidIsWater .AND. useDiagnostics ) THEN        IF ( fluidIsWater .AND. useDiagnostics ) THEN
805            CALL DIAGS_RHO_G(
806         I                    rhoInSitu, uVel, vVel,
807         I                    myTime, myIter, myThid )
808          CALL DIAGS_OCEANIC_SURF_FLUX( myTime, myIter, myThid )          CALL DIAGS_OCEANIC_SURF_FLUX( myTime, myIter, myThid )
809        ENDIF        ENDIF
810        IF ( ivdc_kappa.NE.0 .AND. useDiagnostics ) THEN        IF ( ivdc_kappa.NE.0 .AND. useDiagnostics ) THEN
811          CALL DIAGNOSTICS_FILL( IVDConvCount,'CONVADJ ',          CALL DIAGNOSTICS_FILL( IVDConvCount, 'CONVADJ ',
812       &                         0, Nr, 0, 1, 1, myThid )       &                               0, Nr, 0, 1, 1, myThid )
813        ENDIF        ENDIF
814  #endif  #endif
815    
816  #ifdef ALLOW_DEBUG  #ifdef ALLOW_DEBUG
817        IF ( debugLevel .GE. debLevB )        IF (debugMode) CALL DEBUG_LEAVE('DO_OCEANIC_PHYS',myThid)
      &     CALL DEBUG_LEAVE('DO_OCEANIC_PHYS',myThid)  
818  #endif  #endif
819    
820        RETURN        RETURN

Legend:
Removed from v.1.64  
changed lines
  Added in v.1.99

  ViewVC Help
Powered by ViewVC 1.1.22