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

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

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


Revision 1.115 - (hide annotations) (download)
Sat Apr 28 19:04:57 2012 UTC (12 years, 1 month ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint63n
Changes since 1.114: +5 -1 lines
Add store.

1 heimbach 1.115 C $Header: /u/gcmpack/MITgcm/model/src/do_oceanic_phys.F,v 1.114 2012/03/06 15:10:05 jmc Exp $
2 jmc 1.1 C $Name: $
3    
4     #include "PACKAGES_CONFIG.h"
5     #include "CPP_OPTIONS.h"
6    
7     #ifdef ALLOW_AUTODIFF_TAMC
8     # ifdef ALLOW_GMREDI
9     # include "GMREDI_OPTIONS.h"
10     # endif
11     # ifdef ALLOW_KPP
12     # include "KPP_OPTIONS.h"
13     # endif
14 jmc 1.29 # ifdef ALLOW_SEAICE
15     # include "SEAICE_OPTIONS.h"
16     # endif
17 jmc 1.1 #endif /* ALLOW_AUTODIFF_TAMC */
18    
19     CBOP
20     C !ROUTINE: DO_OCEANIC_PHYS
21     C !INTERFACE:
22     SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid)
23     C !DESCRIPTION: \bv
24     C *==========================================================*
25 jmc 1.28 C | SUBROUTINE DO_OCEANIC_PHYS
26     C | o Controlling routine for oceanic physics and
27 jmc 1.1 C | parameterization
28     C *==========================================================*
29     C | o originally, part of S/R thermodynamics
30     C *==========================================================*
31     C \ev
32    
33     C !USES:
34     IMPLICIT NONE
35     C == Global variables ===
36     #include "SIZE.h"
37     #include "EEPARAMS.h"
38     #include "PARAMS.h"
39 jmc 1.69 #include "GRID.h"
40 jmc 1.1 #include "DYNVARS.h"
41 jmc 1.20 #ifdef ALLOW_TIMEAVE
42     #include "TIMEAVE_STATV.h"
43     #endif
44 mlosch 1.22 #if defined (ALLOW_BALANCE_FLUXES) && !(defined ALLOW_AUTODIFF_TAMC)
45     #include "FFIELDS.h"
46     #endif
47 jmc 1.1
48     #ifdef ALLOW_AUTODIFF_TAMC
49 heimbach 1.80 # include "AUTODIFF_MYFIELDS.h"
50 jmc 1.1 # include "tamc.h"
51     # include "tamc_keys.h"
52     # include "FFIELDS.h"
53 heimbach 1.54 # include "SURFACE.h"
54 jmc 1.1 # include "EOS.h"
55     # ifdef ALLOW_KPP
56     # include "KPP.h"
57     # endif
58 gforget 1.91 # ifdef ALLOW_GGL90
59     # include "GGL90.h"
60     # endif
61 jmc 1.1 # ifdef ALLOW_GMREDI
62     # include "GMREDI.h"
63     # endif
64     # ifdef ALLOW_EBM
65     # include "EBM.h"
66     # endif
67 jmc 1.29 # ifdef ALLOW_EXF
68     # include "ctrl.h"
69 jmc 1.40 # include "EXF_FIELDS.h"
70 jmc 1.29 # ifdef ALLOW_BULKFORMULAE
71 jmc 1.40 # include "EXF_CONSTANTS.h"
72 jmc 1.29 # endif
73     # endif
74     # ifdef ALLOW_SEAICE
75 jmc 1.114 # include "SEAICE_SIZE.h"
76 jmc 1.29 # include "SEAICE.h"
77     # endif
78 heimbach 1.105 # ifdef ALLOW_THSICE
79     # include "THSICE_VARS.h"
80     # endif
81 heimbach 1.75 # ifdef ALLOW_SALT_PLUME
82     # include "SALT_PLUME.h"
83     # endif
84 jmc 1.1 #endif /* ALLOW_AUTODIFF_TAMC */
85    
86     C !INPUT/OUTPUT PARAMETERS:
87     C == Routine arguments ==
88 jmc 1.18 C myTime :: Current time in simulation
89     C myIter :: Current iteration number in simulation
90     C myThid :: Thread number for this instance of the routine.
91 jmc 1.1 _RL myTime
92     INTEGER myIter
93     INTEGER myThid
94    
95     C !LOCAL VARIABLES:
96     C == Local variables
97 jmc 1.47 C rhoK, rhoKm1 :: Density at current level, and level above
98 jmc 1.18 C iMin, iMax :: Ranges and sub-block indices on which calculations
99 jmc 1.1 C jMin, jMax are applied.
100 jmc 1.18 C bi, bj :: tile indices
101     C i,j,k :: loop indices
102 jmc 1.47 _RL rhoKp1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
103     _RL rhoKm1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
104 jmc 1.1 _RL sigmaX (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
105     _RL sigmaY (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
106     _RL sigmaR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
107     INTEGER iMin, iMax
108     INTEGER jMin, jMax
109     INTEGER bi, bj
110 jmc 1.18 INTEGER i, j, k
111 jmc 1.17 INTEGER doDiagsRho
112     #ifdef ALLOW_DIAGNOSTICS
113     LOGICAL DIAGNOSTICS_IS_ON
114     EXTERNAL DIAGNOSTICS_IS_ON
115     #endif /* ALLOW_DIAGNOSTICS */
116 jmc 1.1
117     CEOP
118    
119 heimbach 1.12 #ifdef ALLOW_AUTODIFF_TAMC
120     C-- dummy statement to end declaration part
121     itdkey = 1
122     #endif /* ALLOW_AUTODIFF_TAMC */
123    
124 jmc 1.1 #ifdef ALLOW_DEBUG
125 jmc 1.96 IF (debugMode) CALL DEBUG_ENTER('DO_OCEANIC_PHYS',myThid)
126 jmc 1.1 #endif
127 jmc 1.36
128 jmc 1.17 doDiagsRho = 0
129     #ifdef ALLOW_DIAGNOSTICS
130     IF ( useDiagnostics .AND. fluidIsWater ) THEN
131 jmc 1.110 IF ( DIAGNOSTICS_IS_ON('MXLDEPTH',myThid) )
132 jmc 1.71 & doDiagsRho = doDiagsRho + 1
133     IF ( DIAGNOSTICS_IS_ON('DRHODR ',myThid) )
134     & doDiagsRho = doDiagsRho + 2
135 jmc 1.110 IF ( DIAGNOSTICS_IS_ON('WdRHO_P ',myThid) )
136 jmc 1.71 & doDiagsRho = doDiagsRho + 4
137 jmc 1.110 IF ( DIAGNOSTICS_IS_ON('WdRHOdP ',myThid) )
138     & doDiagsRho = doDiagsRho + 8
139 jmc 1.17 ENDIF
140     #endif /* ALLOW_DIAGNOSTICS */
141    
142 jmc 1.82 #ifdef ALLOW_OBCS
143     IF (useOBCS) THEN
144     C-- Calculate future values on open boundaries
145     C-- moved before SEAICE_MODEL call since SEAICE_MODEL needs seaice-obcs fields
146 heimbach 1.100 # ifdef ALLOW_AUTODIFF_TAMC
147     CADJ STORE theta = comlev1, key=ikey_dynamics, kind=isbyte
148     CADJ STORE salt = comlev1, key=ikey_dynamics, kind=isbyte
149     # endif
150     # ifdef ALLOW_DEBUG
151 jmc 1.96 IF (debugMode) CALL DEBUG_CALL('OBCS_CALC',myThid)
152 heimbach 1.100 # endif
153 jahn 1.83 CALL OBCS_CALC( myTime+deltaTclock, myIter+1,
154     I uVel, vVel, wVel, theta, salt, myThid )
155 jmc 1.82 ENDIF
156     #endif /* ALLOW_OBCS */
157 jmc 1.69
158 jmc 1.98 #ifdef ALLOW_ADDFLUID
159 jmc 1.110 c IF ( fluidIsWater ) THEN
160     IF ( useICEFRONT ) THEN
161 jmc 1.98 DO bj=myByLo(myThid),myByHi(myThid)
162     DO bi=myBxLo(myThid),myBxHi(myThid)
163     DO k=1,Nr
164     DO j=1-OLy,sNy+OLy
165     DO i=1-OLx,sNx+OLx
166     addMass(i,j,k,bi,bj) = 0. _d 0
167     ENDDO
168     ENDDO
169     ENDDO
170     ENDDO
171     ENDDO
172     ENDIF
173     #endif /* ALLOW_ADDFLUID */
174    
175 gforget 1.87 #ifdef ALLOW_AUTODIFF_TAMC
176     # ifdef ALLOW_SALT_PLUME
177     DO bj=myByLo(myThid),myByHi(myThid)
178     DO bi=myBxLo(myThid),myBxHi(myThid)
179     DO j=1-OLy,sNy+OLy
180     DO i=1-OLx,sNx+OLx
181     saltPlumeDepth(i,j,bi,bj) = 0. _d 0
182     saltPlumeFlux(i,j,bi,bj) = 0. _d 0
183     ENDDO
184     ENDDO
185     ENDDO
186     ENDDO
187     # endif
188     #endif /* ALLOW_AUTODIFF_TAMC */
189    
190 dimitri 1.113 #ifdef ALLOW_FRAZIL
191     IF ( useFRAZIL ) THEN
192     C-- Freeze water in the ocean interior and let it rise to the surface
193     CALL FRAZIL_CALC_RHS( myTime, myIter, myThid )
194     ENDIF
195     #endif /* ALLOW_FRAZIL */
196    
197 jmc 1.29 #ifdef ALLOW_SEAICE
198     IF ( useSEAICE ) THEN
199 heimbach 1.62 # ifdef ALLOW_AUTODIFF_TAMC
200 heimbach 1.65 cph-adj-test(
201 heimbach 1.81 CADJ STORE area = comlev1, key=ikey_dynamics, kind=isbyte
202     CADJ STORE hsnow = comlev1, key=ikey_dynamics, kind=isbyte
203 heimbach 1.88 CADJ STORE heff = comlev1, key=ikey_dynamics, kind=isbyte
204 heimbach 1.81 CADJ STORE empmr,qsw,theta = comlev1, key = ikey_dynamics,
205 heimbach 1.77 CADJ & kind = isbyte
206 heimbach 1.65 cph-adj-test)
207 heimbach 1.77 CADJ STORE atemp,aqh,precip = comlev1, key = ikey_dynamics,
208     CADJ & kind = isbyte
209     CADJ STORE swdown,lwdown = comlev1, key = ikey_dynamics,
210     CADJ & kind = isbyte
211 heimbach 1.34 cph# ifdef EXF_READ_EVAP
212 heimbach 1.77 CADJ STORE evap = comlev1, key = ikey_dynamics,
213     CADJ & kind = isbyte
214 heimbach 1.34 cph# endif
215 heimbach 1.77 CADJ STORE uvel,vvel = comlev1, key = ikey_dynamics,
216     CADJ & kind = isbyte
217 heimbach 1.95 # ifdef SEAICE_CGRID
218 heimbach 1.93 CADJ STORE stressdivergencex = comlev1, key = ikey_dynamics,
219     CADJ & kind = isbyte
220     CADJ STORE stressdivergencey = comlev1, key = ikey_dynamics,
221     CADJ & kind = isbyte
222     # endif
223 heimbach 1.62 # ifdef SEAICE_ALLOW_DYNAMICS
224 heimbach 1.77 CADJ STORE uice = comlev1, key = ikey_dynamics,
225     CADJ & kind = isbyte
226     CADJ STORE vice = comlev1, key = ikey_dynamics,
227     CADJ & kind = isbyte
228 heimbach 1.62 # ifdef SEAICE_ALLOW_EVP
229 heimbach 1.77 CADJ STORE seaice_sigma1 = comlev1, key = ikey_dynamics,
230     CADJ & kind = isbyte
231     CADJ STORE seaice_sigma2 = comlev1, key = ikey_dynamics,
232     CADJ & kind = isbyte
233     CADJ STORE seaice_sigma12 = comlev1, key = ikey_dynamics,
234     CADJ & kind = isbyte
235 heimbach 1.62 # endif
236     # endif
237 heimbach 1.104 cph# ifdef SEAICE_SALINITY
238 heimbach 1.77 CADJ STORE salt = comlev1, key = ikey_dynamics,
239     CADJ & kind = isbyte
240 heimbach 1.104 cph# endif
241 heimbach 1.62 # ifdef ATMOSPHERIC_LOADING
242 heimbach 1.77 CADJ STORE pload = comlev1, key = ikey_dynamics,
243     CADJ & kind = isbyte
244     CADJ STORE siceload = comlev1, key = ikey_dynamics,
245     CADJ & kind = isbyte
246 heimbach 1.62 # endif
247     # ifdef NONLIN_FRSURF
248 heimbach 1.77 CADJ STORE recip_hfacc = comlev1, key = ikey_dynamics,
249     CADJ & kind = isbyte
250 heimbach 1.62 # endif
251 heimbach 1.78 # ifdef ANNUAL_BALANCE
252     CADJ STORE balance_itcount = comlev1, key = ikey_dynamics,
253     CADJ & kind = isbyte
254     # endif /* ANNUAL_BALANCE */
255 heimbach 1.55 # endif
256 heimbach 1.62 # ifdef ALLOW_DEBUG
257 jmc 1.96 IF (debugMode) CALL DEBUG_CALL('SEAICE_MODEL',myThid)
258 heimbach 1.62 # endif
259 jmc 1.29 CALL TIMER_START('SEAICE_MODEL [DO_OCEANIC_PHYS]', myThid)
260     CALL SEAICE_MODEL( myTime, myIter, myThid )
261     CALL TIMER_STOP ('SEAICE_MODEL [DO_OCEANIC_PHYS]', myThid)
262 heimbach 1.62 # ifdef ALLOW_COST
263 heimbach 1.57 CALL SEAICE_COST_SENSI ( myTime, myIter, myThid )
264 heimbach 1.62 # endif
265 heimbach 1.35 ENDIF
266 jmc 1.29 #endif /* ALLOW_SEAICE */
267    
268 heimbach 1.64 #ifdef ALLOW_AUTODIFF_TAMC
269 heimbach 1.77 CADJ STORE sst, sss = comlev1, key = ikey_dynamics,
270     CADJ & kind = isbyte
271     CADJ STORE qsw = comlev1, key = ikey_dynamics,
272     CADJ & kind = isbyte
273 heimbach 1.64 # ifdef ALLOW_SEAICE
274 heimbach 1.77 CADJ STORE area = comlev1, key = ikey_dynamics,
275     CADJ & kind = isbyte
276 heimbach 1.64 # endif
277     #endif
278    
279 jscott 1.30 #if (defined ALLOW_THSICE) && !(defined ALLOW_ATM2D)
280 jmc 1.14 IF ( useThSIce .AND. fluidIsWater ) THEN
281 heimbach 1.101 # ifdef ALLOW_AUTODIFF_TAMC
282     cph(
283     # ifdef NONLIN_FRSURF
284     CADJ STORE uice,vice = comlev1, key = ikey_dynamics,
285     CADJ & kind = isbyte
286     CADJ STORE salt,theta = comlev1, key = ikey_dynamics,
287     CADJ & kind = isbyte
288     CADJ STORE qnet,qsw, empmr = comlev1, key = ikey_dynamics,
289     CADJ & kind = isbyte
290     CADJ STORE hFac_surfC = comlev1, key = ikey_dynamics,
291     CADJ & kind = isbyte
292     # endif
293     # endif
294     # ifdef ALLOW_DEBUG
295 jmc 1.96 IF (debugMode) CALL DEBUG_CALL('THSICE_MAIN',myThid)
296 heimbach 1.101 # endif
297 jmc 1.5 C-- Step forward Therm.Sea-Ice variables
298     C and modify forcing terms including effects from ice
299     CALL TIMER_START('THSICE_MAIN [DO_OCEANIC_PHYS]', myThid)
300     CALL THSICE_MAIN( myTime, myIter, myThid )
301     CALL TIMER_STOP( 'THSICE_MAIN [DO_OCEANIC_PHYS]', myThid)
302     ENDIF
303     #endif /* ALLOW_THSICE */
304    
305 mlosch 1.21 #ifdef ALLOW_SHELFICE
306 heimbach 1.92 # ifdef ALLOW_AUTODIFF_TAMC
307     CADJ STORE salt, theta = comlev1, key = ikey_dynamics,
308     CADJ & kind = isbyte
309     # endif
310 mlosch 1.21 IF ( useShelfIce .AND. fluidIsWater ) THEN
311     #ifdef ALLOW_DEBUG
312 jmc 1.96 IF (debugMode) CALL DEBUG_CALL('SHELFICE_THERMODYNAMICS',myThid)
313 mlosch 1.21 #endif
314 jmc 1.47 C compute temperature and (virtual) salt flux at the
315 mlosch 1.21 C shelf-ice ocean interface
316     CALL TIMER_START('SHELFICE_THERMODYNAMICS [DO_OCEANIC_PHYS]',
317     & myThid)
318     CALL SHELFICE_THERMODYNAMICS( myTime, myIter, myThid )
319     CALL TIMER_STOP( 'SHELFICE_THERMODYNAMICS [DO_OCEANIC_PHYS]',
320     & myThid)
321     ENDIF
322     #endif /* ALLOW_SHELFICE */
323    
324 dimitri 1.85 #ifdef ALLOW_ICEFRONT
325     IF ( useICEFRONT .AND. fluidIsWater ) THEN
326     #ifdef ALLOW_DEBUG
327 jmc 1.96 IF (debugMode) CALL DEBUG_CALL('ICEFRONT_THERMODYNAMICS',myThid)
328 dimitri 1.85 #endif
329     C compute temperature and (virtual) salt flux at the
330     C ice-front ocean interface
331     CALL TIMER_START('ICEFRONT_THERMODYNAMICS [DO_OCEANIC_PHYS]',
332     & myThid)
333     CALL ICEFRONT_THERMODYNAMICS( myTime, myIter, myThid )
334     CALL TIMER_STOP( 'ICEFRONT_THERMODYNAMICS [DO_OCEANIC_PHYS]',
335     & myThid)
336     ENDIF
337     #endif /* ALLOW_ICEFRONT */
338    
339 jmc 1.112 #ifdef ALLOW_SALT_PLUME
340     IF ( useSALT_PLUME ) THEN
341     CALL SALT_PLUME_DO_EXCH( myTime, myIter, myThid )
342     ENDIF
343     #endif /* ALLOW_SALT_PLUME */
344    
345 jmc 1.5 C-- Freeze water at the surface
346 heimbach 1.104 IF ( allowFreezing ) THEN
347 jmc 1.5 #ifdef ALLOW_AUTODIFF_TAMC
348 heimbach 1.77 CADJ STORE theta = comlev1, key = ikey_dynamics,
349     CADJ & kind = isbyte
350 jmc 1.5 #endif
351     CALL FREEZE_SURFACE( myTime, myIter, myThid )
352     ENDIF
353    
354 jmc 1.28 #ifdef ALLOW_OCN_COMPON_INTERF
355 jmc 1.5 C-- Apply imported data (from coupled interface) to forcing fields
356 jmc 1.28 C jmc: do not know precisely where to put this call (bf or af thSIce ?)
357 jmc 1.36 IF ( useCoupler ) THEN
358 jmc 1.5 CALL OCN_APPLY_IMPORT( .TRUE., myTime, myIter, myThid )
359 jmc 1.36 ENDIF
360 jmc 1.28 #endif /* ALLOW_OCN_COMPON_INTERF */
361 jmc 1.5
362 jmc 1.25 #ifdef ALLOW_BALANCE_FLUXES
363 jmc 1.36 C balance fluxes
364     IF ( balanceEmPmR )
365 jmc 1.84 & CALL REMOVE_MEAN_RS( 1, EmPmR, maskInC, maskInC, rA, drF,
366 jmc 1.25 & 'EmPmR', myTime, myThid )
367 jmc 1.36 IF ( balanceQnet )
368 jmc 1.84 & CALL REMOVE_MEAN_RS( 1, Qnet, maskInC, maskInC, rA, drF,
369 jmc 1.25 & 'Qnet ', myTime, myThid )
370     #endif /* ALLOW_BALANCE_FLUXES */
371    
372 jmc 1.1 #ifdef ALLOW_AUTODIFF_TAMC
373     C-- HPF directive to help TAMC
374     CHPF$ INDEPENDENT
375 jmc 1.106 #else /* ALLOW_AUTODIFF_TAMC */
376     C if fluid is not water, by-pass find_rho, gmredi, surfaceForcing
377     C and all vertical mixing schemes, but keep OBCS_CALC
378     IF ( fluidIsWater ) THEN
379 jmc 1.1 #endif /* ALLOW_AUTODIFF_TAMC */
380     DO bj=myByLo(myThid),myByHi(myThid)
381     #ifdef ALLOW_AUTODIFF_TAMC
382 heimbach 1.15 C-- HPF directive to help TAMC
383     CHPF$ INDEPENDENT
384 jmc 1.1 #endif /* ALLOW_AUTODIFF_TAMC */
385     DO bi=myBxLo(myThid),myBxHi(myThid)
386    
387     #ifdef ALLOW_AUTODIFF_TAMC
388     act1 = bi - myBxLo(myThid)
389     max1 = myBxHi(myThid) - myBxLo(myThid) + 1
390     act2 = bj - myByLo(myThid)
391     max2 = myByHi(myThid) - myByLo(myThid) + 1
392     act3 = myThid - 1
393     max3 = nTx*nTy
394     act4 = ikey_dynamics - 1
395     itdkey = (act1 + 1) + act2*max1
396     & + act3*max1*max2
397     & + act4*max1*max2*max3
398 jmc 1.74 #endif /* ALLOW_AUTODIFF_TAMC */
399 jmc 1.1
400     C-- Set up work arrays with valid (i.e. not NaN) values
401     C These inital values do not alter the numerical results. They
402     C just ensure that all memory references are to valid floating
403     C point numbers. This prevents spurious hardware signals due to
404     C uninitialised but inert locations.
405    
406 jmc 1.69 #ifdef ALLOW_AUTODIFF_TAMC
407 jmc 1.1 DO j=1-OLy,sNy+OLy
408     DO i=1-OLx,sNx+OLx
409 jmc 1.69 rhoKm1 (i,j) = 0. _d 0
410 jmc 1.47 rhoKp1 (i,j) = 0. _d 0
411 jmc 1.1 ENDDO
412     ENDDO
413 jmc 1.69 #endif /* ALLOW_AUTODIFF_TAMC */
414 jmc 1.1
415     DO k=1,Nr
416     DO j=1-OLy,sNy+OLy
417     DO i=1-OLx,sNx+OLx
418 jmc 1.69 C This is currently used by GMRedi, IVDC, MXL-depth and Diagnostics
419 jmc 1.1 sigmaX(i,j,k) = 0. _d 0
420     sigmaY(i,j,k) = 0. _d 0
421     sigmaR(i,j,k) = 0. _d 0
422     #ifdef ALLOW_AUTODIFF_TAMC
423     cph all the following init. are necessary for TAF
424     cph although some of these are re-initialised later.
425 heimbach 1.109 rhoInSitu(i,j,k,bi,bj) = 0.
426 jmc 1.1 IVDConvCount(i,j,k,bi,bj) = 0.
427     # ifdef ALLOW_GMREDI
428     Kwx(i,j,k,bi,bj) = 0. _d 0
429     Kwy(i,j,k,bi,bj) = 0. _d 0
430     Kwz(i,j,k,bi,bj) = 0. _d 0
431     # ifdef GM_NON_UNITY_DIAGONAL
432     Kux(i,j,k,bi,bj) = 0. _d 0
433     Kvy(i,j,k,bi,bj) = 0. _d 0
434     # endif
435     # ifdef GM_EXTRA_DIAGONAL
436     Kuz(i,j,k,bi,bj) = 0. _d 0
437     Kvz(i,j,k,bi,bj) = 0. _d 0
438     # endif
439     # ifdef GM_BOLUS_ADVEC
440     GM_PsiX(i,j,k,bi,bj) = 0. _d 0
441     GM_PsiY(i,j,k,bi,bj) = 0. _d 0
442     # endif
443     # ifdef GM_VISBECK_VARIABLE_K
444     VisbeckK(i,j,bi,bj) = 0. _d 0
445     # endif
446     # endif /* ALLOW_GMREDI */
447 heimbach 1.42 # ifdef ALLOW_KPP
448     KPPdiffKzS(i,j,k,bi,bj) = 0. _d 0
449     KPPdiffKzT(i,j,k,bi,bj) = 0. _d 0
450     # endif /* ALLOW_KPP */
451 gforget 1.91 # ifdef ALLOW_GGL90
452     GGL90viscArU(i,j,k,bi,bj) = 0. _d 0
453     GGL90viscArV(i,j,k,bi,bj) = 0. _d 0
454     GGL90diffKr(i,j,k,bi,bj) = 0. _d 0
455     # endif /* ALLOW_GGL90 */
456 jmc 1.1 #endif /* ALLOW_AUTODIFF_TAMC */
457     ENDDO
458     ENDDO
459     ENDDO
460    
461     iMin = 1-OLx
462     iMax = sNx+OLx
463     jMin = 1-OLy
464     jMax = sNy+OLy
465    
466     #ifdef ALLOW_AUTODIFF_TAMC
467 jmc 1.96 CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=itdkey,
468 heimbach 1.77 CADJ & kind = isbyte
469 jmc 1.96 CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=itdkey,
470 heimbach 1.77 CADJ & kind = isbyte
471 heimbach 1.12 CADJ STORE totphihyd(:,:,:,bi,bj)
472 jmc 1.96 CADJ & = comlev1_bibj, key=itdkey,
473 heimbach 1.77 CADJ & kind = isbyte
474 heimbach 1.10 # ifdef ALLOW_KPP
475 jmc 1.96 CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey,
476 heimbach 1.77 CADJ & kind = isbyte
477 jmc 1.96 CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey,
478 heimbach 1.77 CADJ & kind = isbyte
479 heimbach 1.10 # endif
480 heimbach 1.115 # ifdef ALLOW_SALT_PLUME
481     CADJ STORE saltplumedepth(:,:,bi,bj) = comlev1_bibj, key=itdkey,
482     CADJ & kind = isbyte
483     # endif
484 jmc 1.1 #endif /* ALLOW_AUTODIFF_TAMC */
485    
486 jmc 1.71 C-- Always compute density (stored in common block) here; even when it is not
487     C needed here, will be used anyway in calc_phi_hyd (data flow easier this way)
488     #ifdef ALLOW_DEBUG
489 jmc 1.110 IF (debugMode) CALL DEBUG_CALL('FIND_RHO_2D (xNr)',myThid)
490 jmc 1.71 #endif
491     #ifdef ALLOW_AUTODIFF_TAMC
492 jmc 1.110 IF ( fluidIsWater ) THEN
493 jmc 1.71 #endif /* ALLOW_AUTODIFF_TAMC */
494 jmc 1.69 #ifdef ALLOW_DOWN_SLOPE
495 jmc 1.110 IF ( useDOWN_SLOPE ) THEN
496     DO k=1,Nr
497 jmc 1.69 CALL DWNSLP_CALC_RHO(
498     I theta, salt,
499 jmc 1.71 O rhoInSitu(1-OLx,1-OLy,k,bi,bj),
500 jmc 1.69 I k, bi, bj, myTime, myIter, myThid )
501 jmc 1.110 ENDDO
502     ENDIF
503 jmc 1.71 #endif /* ALLOW_DOWN_SLOPE */
504 dimitri 1.107 #ifdef ALLOW_BBL
505 jmc 1.110 IF ( useBBL ) THEN
506 dimitri 1.108 C pkg/bbl requires in-situ bbl density for depths equal to and deeper than the bbl.
507     C To reduce computation and storage requirement, these densities are stored in the
508     C dry grid boxes of rhoInSitu. See BBL_CALC_RHO for details.
509 jmc 1.110 DO k=Nr,1,-1
510 dimitri 1.107 CALL BBL_CALC_RHO(
511     I theta, salt,
512     O rhoInSitu,
513     I k, bi, bj, myTime, myIter, myThid )
514    
515 jmc 1.110 ENDDO
516     ENDIF
517 dimitri 1.107 #endif /* ALLOW_BBL */
518 jmc 1.110 IF ( .NOT. ( useDOWN_SLOPE .OR. useBBL ) ) THEN
519     DO k=1,Nr
520 jmc 1.71 CALL FIND_RHO_2D(
521     I iMin, iMax, jMin, jMax, k,
522     I theta(1-OLx,1-OLy,k,bi,bj),
523     I salt (1-OLx,1-OLy,k,bi,bj),
524     O rhoInSitu(1-OLx,1-OLy,k,bi,bj),
525     I k, bi, bj, myThid )
526 jmc 1.110 ENDDO
527     ENDIF
528 jmc 1.74 #ifdef ALLOW_AUTODIFF_TAMC
529 jmc 1.110 ELSE
530 jmc 1.74 C- fluid is not water:
531 jmc 1.110 DO k=1,Nr
532 jmc 1.74 DO j=1-OLy,sNy+OLy
533     DO i=1-OLx,sNx+OLx
534     rhoInSitu(i,j,k,bi,bj) = 0.
535     ENDDO
536     ENDDO
537 jmc 1.110 ENDDO
538     ENDIF
539     #endif /* ALLOW_AUTODIFF_TAMC */
540    
541     #ifdef ALLOW_DEBUG
542     IF (debugMode) CALL DEBUG_MSG('ENTERING UPWARD K LOOP',myThid)
543     #endif
544    
545     C-- Start of diagnostic loop
546     DO k=Nr,1,-1
547    
548     #ifdef ALLOW_AUTODIFF_TAMC
549     C? Patrick, is this formula correct now that we change the loop range?
550     C? Do we still need this?
551     cph kkey formula corrected.
552     cph Needed for rhoK, rhoKm1, in the case useGMREDI.
553     kkey = (itdkey-1)*Nr + k
554 jmc 1.74 #endif /* ALLOW_AUTODIFF_TAMC */
555 jmc 1.69
556 jmc 1.110 c#ifdef ALLOW_AUTODIFF_TAMC
557     cCADJ STORE theta(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey,
558     cCADJ & kind = isbyte
559     cCADJ STORE salt(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey,
560     cCADJ & kind = isbyte
561     c#endif /* ALLOW_AUTODIFF_TAMC */
562    
563 jmc 1.1 C-- Calculate gradients of potential density for isoneutral
564     C slope terms (e.g. GM/Redi tensor or IVDC diffusivity)
565 jmc 1.17 IF ( useGMRedi .OR. (k.GT.1 .AND. ivdc_kappa.NE.0.)
566 dimitri 1.61 & .OR. useSALT_PLUME .OR. doDiagsRho.GE.1 ) THEN
567 jmc 1.1 IF (k.GT.1) THEN
568     #ifdef ALLOW_AUTODIFF_TAMC
569 jmc 1.96 CADJ STORE theta(:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey,
570 heimbach 1.77 CADJ & kind = isbyte
571 jmc 1.96 CADJ STORE salt (:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey,
572 heimbach 1.77 CADJ & kind = isbyte
573 jmc 1.96 CADJ STORE rhokm1 (bi,bj) = comlev1_bibj_k, key=kkey,
574 heimbach 1.77 CADJ & kind = isbyte
575 jmc 1.1 #endif /* ALLOW_AUTODIFF_TAMC */
576 jmc 1.68 CALL FIND_RHO_2D(
577     I iMin, iMax, jMin, jMax, k,
578     I theta(1-OLx,1-OLy,k-1,bi,bj),
579     I salt (1-OLx,1-OLy,k-1,bi,bj),
580     O rhoKm1,
581     I k-1, bi, bj, myThid )
582 jmc 1.1 ENDIF
583     #ifdef ALLOW_DEBUG
584 jmc 1.96 IF (debugMode) CALL DEBUG_CALL('GRAD_SIGMA',myThid)
585 jmc 1.1 #endif
586 heimbach 1.31 cph Avoid variable aliasing for adjoint !!!
587     DO j=jMin,jMax
588     DO i=iMin,iMax
589 jmc 1.71 rhoKp1(i,j) = rhoInSitu(i,j,k,bi,bj)
590 heimbach 1.31 ENDDO
591     ENDDO
592 jmc 1.1 CALL GRAD_SIGMA(
593     I bi, bj, iMin, iMax, jMin, jMax, k,
594 jmc 1.71 I rhoInSitu(1-OLx,1-OLy,k,bi,bj), rhoKm1, rhoKp1,
595 jmc 1.1 O sigmaX, sigmaY, sigmaR,
596     I myThid )
597 gforget 1.66 #ifdef ALLOW_AUTODIFF_TAMC
598 jmc 1.69 #ifdef GMREDI_WITH_STABLE_ADJOINT
599 gforget 1.66 cgf zero out adjoint fields to stabilize pkg/gmredi adjoint
600     cgf -> cuts adjoint dependency from slope to state
601 jmc 1.69 CALL ZERO_ADJ_LOC( Nr, sigmaX, myThid)
602     CALL ZERO_ADJ_LOC( Nr, sigmaY, myThid)
603     CALL ZERO_ADJ_LOC( Nr, sigmaR, myThid)
604 gforget 1.66 #endif
605     #endif /* ALLOW_AUTODIFF_TAMC */
606 jmc 1.1 ENDIF
607    
608     C-- Implicit Vertical Diffusion for Convection
609     IF (k.GT.1 .AND. ivdc_kappa.NE.0.) THEN
610     #ifdef ALLOW_DEBUG
611 jmc 1.96 IF (debugMode) CALL DEBUG_CALL('CALC_IVDC',myThid)
612 jmc 1.1 #endif
613     CALL CALC_IVDC(
614     I bi, bj, iMin, iMax, jMin, jMax, k,
615 mlosch 1.111 I sigmaR,
616 jmc 1.1 I myTime, myIter, myThid)
617     ENDIF
618    
619 jmc 1.17 #ifdef ALLOW_DIAGNOSTICS
620 jmc 1.110 IF ( doDiagsRho.GE.4 ) THEN
621     CALL DIAGS_RHO_L( doDiagsRho, k, bi, bj,
622     I rhoInSitu(1-OLx,1-OLy,1,bi,bj),
623 jmc 1.74 I rhoKm1, wVel,
624 jmc 1.71 I myTime, myIter, myThid )
625 jmc 1.17 ENDIF
626     #endif
627    
628 jmc 1.1 C-- end of diagnostic k loop (Nr:1)
629     ENDDO
630    
631 heimbach 1.57 #ifdef ALLOW_AUTODIFF_TAMC
632 jmc 1.69 CADJ STORE IVDConvCount(:,:,:,bi,bj)
633 jmc 1.96 CADJ & = comlev1_bibj, key=itdkey,
634 heimbach 1.77 CADJ & kind = isbyte
635 heimbach 1.57 #endif
636    
637 jmc 1.47 C-- Diagnose Mixed Layer Depth:
638 jmc 1.110 IF ( useGMRedi .OR. MOD(doDiagsRho,2).EQ.1 ) THEN
639 jmc 1.71 CALL CALC_OCE_MXLAYER(
640     I rhoInSitu(1-OLx,1-OLy,1,bi,bj), sigmaR,
641     I bi, bj, myTime, myIter, myThid )
642 jmc 1.47 ENDIF
643 heimbach 1.53
644 dimitri 1.52 #ifdef ALLOW_SALT_PLUME
645 dimitri 1.61 IF ( useSALT_PLUME ) THEN
646 jmc 1.71 CALL SALT_PLUME_CALC_DEPTH(
647     I rhoInSitu(1-OLx,1-OLy,1,bi,bj), sigmaR,
648     I bi, bj, myTime, myIter, myThid )
649 dimitri 1.60 ENDIF
650 dimitri 1.61 #endif /* ALLOW_SALT_PLUME */
651    
652 jmc 1.8 #ifdef ALLOW_DIAGNOSTICS
653 jmc 1.71 IF ( MOD(doDiagsRho,4).GE.2 ) THEN
654 jmc 1.16 CALL DIAGNOSTICS_FILL (sigmaR, 'DRHODR ', 0, Nr,
655     & 2, bi, bj, myThid)
656 jmc 1.8 ENDIF
657 dimitri 1.61 #endif /* ALLOW_DIAGNOSTICS */
658 jmc 1.8
659 jmc 1.1 C-- Determines forcing terms based on external fields
660     C relaxation terms, etc.
661     #ifdef ALLOW_DEBUG
662 jmc 1.96 IF (debugMode) CALL DEBUG_CALL('EXTERNAL_FORCING_SURF',myThid)
663 jmc 1.1 #endif
664 heimbach 1.23 #ifdef ALLOW_AUTODIFF_TAMC
665     CADJ STORE EmPmR(:,:,bi,bj)
666 jmc 1.96 CADJ & = comlev1_bibj, key=itdkey,
667 heimbach 1.77 CADJ & kind = isbyte
668 heimbach 1.26 # ifdef EXACT_CONSERV
669 heimbach 1.23 CADJ STORE PmEpR(:,:,bi,bj)
670 jmc 1.96 CADJ & = comlev1_bibj, key=itdkey,
671 heimbach 1.77 CADJ & kind = isbyte
672 heimbach 1.26 # endif
673 heimbach 1.27 # ifdef NONLIN_FRSURF
674     CADJ STORE hFac_surfC(:,:,bi,bj)
675 jmc 1.96 CADJ & = comlev1_bibj, key=itdkey,
676 heimbach 1.77 CADJ & kind = isbyte
677 heimbach 1.27 CADJ STORE recip_hFacC(:,:,:,bi,bj)
678 jmc 1.96 CADJ & = comlev1_bibj, key=itdkey,
679 heimbach 1.77 CADJ & kind = isbyte
680 heimbach 1.97 # if (defined (ALLOW_PTRACERS))
681     CADJ STORE surfaceForcingS(:,:,bi,bj) = comlev1_bibj, key=itdkey,
682     CADJ & kind = isbyte
683     CADJ STORE surfaceForcingT(:,:,bi,bj) = comlev1_bibj, key=itdkey,
684     CADJ & kind = isbyte
685     # endif /* ALLOW_PTRACERS */
686     # endif /* NONLIN_FRSURF */
687 heimbach 1.23 #endif
688 jmc 1.36 CALL EXTERNAL_FORCING_SURF(
689 jmc 1.1 I bi, bj, iMin, iMax, jMin, jMax,
690     I myTime, myIter, myThid )
691 heimbach 1.27 #ifdef ALLOW_AUTODIFF_TAMC
692     # ifdef EXACT_CONSERV
693     cph-test
694     cphCADJ STORE PmEpR(:,:,bi,bj)
695 jmc 1.96 cphCADJ & = comlev1_bibj, key=itdkey,
696 heimbach 1.77 cphCADJ & kind = isbyte
697 heimbach 1.27 # endif
698     #endif
699 jmc 1.1
700     #ifdef ALLOW_AUTODIFF_TAMC
701     cph needed for KPP
702 jmc 1.4 CADJ STORE surfaceForcingU(:,:,bi,bj)
703 jmc 1.96 CADJ & = comlev1_bibj, key=itdkey,
704 heimbach 1.77 CADJ & kind = isbyte
705 jmc 1.4 CADJ STORE surfaceForcingV(:,:,bi,bj)
706 jmc 1.96 CADJ & = comlev1_bibj, key=itdkey,
707 heimbach 1.77 CADJ & kind = isbyte
708 jmc 1.4 CADJ STORE surfaceForcingS(:,:,bi,bj)
709 jmc 1.96 CADJ & = comlev1_bibj, key=itdkey,
710 heimbach 1.77 CADJ & kind = isbyte
711 jmc 1.4 CADJ STORE surfaceForcingT(:,:,bi,bj)
712 jmc 1.96 CADJ & = comlev1_bibj, key=itdkey,
713 heimbach 1.77 CADJ & kind = isbyte
714 jmc 1.4 CADJ STORE surfaceForcingTice(:,:,bi,bj)
715 jmc 1.96 CADJ & = comlev1_bibj, key=itdkey,
716 heimbach 1.77 CADJ & kind = isbyte
717 jmc 1.1 #endif /* ALLOW_AUTODIFF_TAMC */
718    
719     #ifdef ALLOW_KPP
720     C-- Compute KPP mixing coefficients
721     IF (useKPP) THEN
722     #ifdef ALLOW_DEBUG
723 jmc 1.96 IF (debugMode) CALL DEBUG_CALL('KPP_CALC',myThid)
724 jmc 1.1 #endif
725 dfer 1.76 CALL TIMER_START('KPP_CALC [DO_OCEANIC_PHYS]', myThid)
726 jmc 1.1 CALL KPP_CALC(
727 jmc 1.44 I bi, bj, myTime, myIter, myThid )
728 dfer 1.76 CALL TIMER_STOP ('KPP_CALC [DO_OCEANIC_PHYS]', myThid)
729 jmc 1.1 #ifdef ALLOW_AUTODIFF_TAMC
730     ELSE
731     CALL KPP_CALC_DUMMY(
732 jmc 1.44 I bi, bj, myTime, myIter, myThid )
733 jmc 1.1 #endif /* ALLOW_AUTODIFF_TAMC */
734     ENDIF
735    
736     #endif /* ALLOW_KPP */
737    
738 mlosch 1.6 #ifdef ALLOW_PP81
739     C-- Compute PP81 mixing coefficients
740     IF (usePP81) THEN
741     #ifdef ALLOW_DEBUG
742 jmc 1.96 IF (debugMode) CALL DEBUG_CALL('PP81_CALC',myThid)
743 mlosch 1.6 #endif
744     CALL PP81_CALC(
745     I bi, bj, myTime, myThid )
746     ENDIF
747     #endif /* ALLOW_PP81 */
748    
749     #ifdef ALLOW_MY82
750     C-- Compute MY82 mixing coefficients
751     IF (useMY82) THEN
752     #ifdef ALLOW_DEBUG
753 jmc 1.96 IF (debugMode) CALL DEBUG_CALL('MY82_CALC',myThid)
754 mlosch 1.6 #endif
755     CALL MY82_CALC(
756     I bi, bj, myTime, myThid )
757     ENDIF
758     #endif /* ALLOW_MY82 */
759    
760 mlosch 1.9 #ifdef ALLOW_GGL90
761 gforget 1.91 #ifdef ALLOW_AUTODIFF_TAMC
762     CADJ STORE GGL90TKE (:,:,:,bi,bj) = comlev1_bibj, key=itdkey,
763     CADJ & kind = isbyte
764     #endif /* ALLOW_AUTODIFF_TAMC */
765 mlosch 1.9 C-- Compute GGL90 mixing coefficients
766     IF (useGGL90) THEN
767     #ifdef ALLOW_DEBUG
768 jmc 1.96 IF (debugMode) CALL DEBUG_CALL('GGL90_CALC',myThid)
769 mlosch 1.9 #endif
770 dfer 1.76 CALL TIMER_START('GGL90_CALC [DO_OCEANIC_PHYS]', myThid)
771 mlosch 1.9 CALL GGL90_CALC(
772 jmc 1.90 I bi, bj, myTime, myIter, myThid )
773 dfer 1.76 CALL TIMER_STOP ('GGL90_CALC [DO_OCEANIC_PHYS]', myThid)
774 mlosch 1.9 ENDIF
775     #endif /* ALLOW_GGL90 */
776    
777 jmc 1.20 #ifdef ALLOW_TIMEAVE
778 jmc 1.36 IF ( taveFreq.GT. 0. _d 0 ) THEN
779 jmc 1.20 CALL TIMEAVE_SURF_FLUX( bi, bj, myTime, myIter, myThid)
780     ENDIF
781     IF (taveFreq.GT.0. .AND. ivdc_kappa.NE.0.) THEN
782     CALL TIMEAVE_CUMULATE(ConvectCountTave, IVDConvCount,
783     I Nr, deltaTclock, bi, bj, myThid)
784     ENDIF
785     #endif /* ALLOW_TIMEAVE */
786    
787 jmc 1.69 #ifdef ALLOW_GMREDI
788 jmc 1.47 #ifdef ALLOW_AUTODIFF_TAMC
789     # ifndef GM_EXCLUDE_CLIPPING
790     cph storing here is needed only for one GMREDI_OPTIONS:
791     cph define GM_BOLUS_ADVEC
792     cph keep it although TAF says you dont need to.
793 jmc 1.86 cph but I have avoided the #ifdef for now, in case more things change
794 jmc 1.96 CADJ STORE sigmaX(:,:,:) = comlev1_bibj, key=itdkey,
795 heimbach 1.77 CADJ & kind = isbyte
796 jmc 1.96 CADJ STORE sigmaY(:,:,:) = comlev1_bibj, key=itdkey,
797 heimbach 1.77 CADJ & kind = isbyte
798 jmc 1.96 CADJ STORE sigmaR(:,:,:) = comlev1_bibj, key=itdkey,
799 heimbach 1.77 CADJ & kind = isbyte
800 jmc 1.47 # endif
801     #endif /* ALLOW_AUTODIFF_TAMC */
802    
803     C-- Calculate iso-neutral slopes for the GM/Redi parameterisation
804     IF (useGMRedi) THEN
805     #ifdef ALLOW_DEBUG
806 jmc 1.96 IF (debugMode) CALL DEBUG_CALL('GMREDI_CALC_TENSOR',myThid)
807 jmc 1.47 #endif
808     CALL GMREDI_CALC_TENSOR(
809 jmc 1.51 I iMin, iMax, jMin, jMax,
810 jmc 1.47 I sigmaX, sigmaY, sigmaR,
811 jmc 1.51 I bi, bj, myTime, myIter, myThid )
812 jmc 1.47 #ifdef ALLOW_AUTODIFF_TAMC
813     ELSE
814     CALL GMREDI_CALC_TENSOR_DUMMY(
815 jmc 1.51 I iMin, iMax, jMin, jMax,
816 jmc 1.47 I sigmaX, sigmaY, sigmaR,
817 jmc 1.51 I bi, bj, myTime, myIter, myThid )
818 jmc 1.47 #endif /* ALLOW_AUTODIFF_TAMC */
819     ENDIF
820 jmc 1.69 #endif /* ALLOW_GMREDI */
821    
822     #ifdef ALLOW_DOWN_SLOPE
823     IF ( useDOWN_SLOPE ) THEN
824     C-- Calculate Downsloping Flow for Down_Slope parameterization
825     IF ( usingPCoords ) THEN
826     CALL DWNSLP_CALC_FLOW(
827 jmc 1.71 I bi, bj, kSurfC, rhoInSitu,
828 jmc 1.69 I myTime, myIter, myThid )
829     ELSE
830     CALL DWNSLP_CALC_FLOW(
831 jmc 1.71 I bi, bj, kLowC, rhoInSitu,
832 jmc 1.69 I myTime, myIter, myThid )
833     ENDIF
834     ENDIF
835     #endif /* ALLOW_DOWN_SLOPE */
836 jmc 1.47
837 jmc 1.106 C-- end bi,bj loops.
838     ENDDO
839     ENDDO
840    
841 jmc 1.98 #ifndef ALLOW_AUTODIFF_TAMC
842     C--- if fluid Is Water: end
843 jmc 1.106 ENDIF
844 jmc 1.98 #endif
845    
846 dimitri 1.107 #ifdef ALLOW_BBL
847     IF ( useBBL ) THEN
848     CALL BBL_CALC_RHS(
849     I myTime, myIter, myThid )
850     ENDIF
851     #endif /* ALLOW_BBL */
852    
853 dimitri 1.94 #ifdef ALLOW_MYPACKAGE
854 jmc 1.106 IF ( useMYPACKAGE ) THEN
855     CALL MYPACKAGE_CALC_RHS(
856     I myTime, myIter, myThid )
857     ENDIF
858 dimitri 1.94 #endif /* ALLOW_MYPACKAGE */
859    
860 jmc 1.99 #ifdef ALLOW_GMREDI
861     IF ( useGMRedi ) THEN
862     CALL GMREDI_DO_EXCH( myTime, myIter, myThid )
863     ENDIF
864     #endif /* ALLOW_GMREDI */
865    
866 jmc 1.98 #ifdef ALLOW_KPP
867 jmc 1.45 IF (useKPP) THEN
868     CALL KPP_DO_EXCH( myThid )
869     ENDIF
870 jmc 1.98 #endif /* ALLOW_KPP */
871 jmc 1.45
872 jmc 1.18 #ifdef ALLOW_DIAGNOSTICS
873     IF ( fluidIsWater .AND. useDiagnostics ) THEN
874 jmc 1.74 CALL DIAGS_RHO_G(
875 jmc 1.110 I rhoInSitu, uVel, vVel, wVel,
876 jmc 1.71 I myTime, myIter, myThid )
877 jmc 1.18 CALL DIAGS_OCEANIC_SURF_FLUX( myTime, myIter, myThid )
878     ENDIF
879 jmc 1.19 IF ( ivdc_kappa.NE.0 .AND. useDiagnostics ) THEN
880 jmc 1.71 CALL DIAGNOSTICS_FILL( IVDConvCount, 'CONVADJ ',
881     & 0, Nr, 0, 1, 1, myThid )
882 jmc 1.19 ENDIF
883 jmc 1.18 #endif
884    
885 jmc 1.1 #ifdef ALLOW_DEBUG
886 jmc 1.96 IF (debugMode) CALL DEBUG_LEAVE('DO_OCEANIC_PHYS',myThid)
887 jmc 1.1 #endif
888    
889     RETURN
890     END

  ViewVC Help
Powered by ViewVC 1.1.22