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

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

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


Revision 1.24 - (show annotations) (download)
Fri Mar 3 10:20:34 2006 UTC (18 years, 3 months ago) by mlosch
Branch: MAIN
Changes since 1.23: +10 -11 lines
o move balancing of fluxes before the call of external_forcing_surf
(thanks to Jean-Michel for catching this bug)

1 C $Header: /u/gcmpack/MITgcm/model/src/do_oceanic_phys.F,v 1.23 2006/03/02 23:41:10 heimbach Exp $
2 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 #endif /* ALLOW_AUTODIFF_TAMC */
15
16 CBOP
17 C !ROUTINE: DO_OCEANIC_PHYS
18 C !INTERFACE:
19 SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid)
20 C !DESCRIPTION: \bv
21 C *==========================================================*
22 C | SUBROUTINE DO_OCEANIC_PHYS
23 C | o Controlling routine for oceanic physics and
24 C | parameterization
25 C *==========================================================*
26 C | o originally, part of S/R thermodynamics
27 C *==========================================================*
28 C \ev
29
30 C !USES:
31 IMPLICIT NONE
32 C == Global variables ===
33 #include "SIZE.h"
34 #include "EEPARAMS.h"
35 #include "PARAMS.h"
36 #include "DYNVARS.h"
37 #include "GRID.h"
38 #ifdef ALLOW_TIMEAVE
39 #include "TIMEAVE_STATV.h"
40 #endif
41 #if defined (ALLOW_BALANCE_FLUXES) && !(defined ALLOW_AUTODIFF_TAMC)
42 #include "FFIELDS.h"
43 #endif
44
45 #ifdef ALLOW_AUTODIFF_TAMC
46 # include "tamc.h"
47 # include "tamc_keys.h"
48 # include "FFIELDS.h"
49 # include "EOS.h"
50 # ifdef ALLOW_KPP
51 # include "KPP.h"
52 # endif
53 # ifdef ALLOW_GMREDI
54 # include "GMREDI.h"
55 # endif
56 # ifdef ALLOW_EBM
57 # include "EBM.h"
58 # endif
59 # ifdef EXACT_CONSERV
60 # include "SURFACE.h"
61 # endif
62 #endif /* ALLOW_AUTODIFF_TAMC */
63
64 C !INPUT/OUTPUT PARAMETERS:
65 C == Routine arguments ==
66 C myTime :: Current time in simulation
67 C myIter :: Current iteration number in simulation
68 C myThid :: Thread number for this instance of the routine.
69 _RL myTime
70 INTEGER myIter
71 INTEGER myThid
72
73 C !LOCAL VARIABLES:
74 C == Local variables
75 C rhoK, rhoKM1 :: Density at current level, and level above
76 C iMin, iMax :: Ranges and sub-block indices on which calculations
77 C jMin, jMax are applied.
78 C bi, bj :: tile indices
79 C i,j,k :: loop indices
80 _RL rhokm1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
81 _RL rhok (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
82 _RL sigmaX (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
83 _RL sigmaY (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
84 _RL sigmaR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
85 INTEGER iMin, iMax
86 INTEGER jMin, jMax
87 INTEGER bi, bj
88 INTEGER i, j, k
89 INTEGER doDiagsRho
90 #ifdef ALLOW_DIAGNOSTICS
91 LOGICAL DIAGNOSTICS_IS_ON
92 EXTERNAL DIAGNOSTICS_IS_ON
93 #endif /* ALLOW_DIAGNOSTICS */
94
95 CEOP
96
97 #ifdef ALLOW_AUTODIFF_TAMC
98 C-- dummy statement to end declaration part
99 itdkey = 1
100 #endif /* ALLOW_AUTODIFF_TAMC */
101
102 #ifdef ALLOW_DEBUG
103 IF ( debugLevel .GE. debLevB )
104 & CALL DEBUG_ENTER('DO_OCEANIC_PHYS',myThid)
105 #endif
106
107 doDiagsRho = 0
108 #ifdef ALLOW_DIAGNOSTICS
109 IF ( useDiagnostics .AND. fluidIsWater ) THEN
110 IF ( DIAGNOSTICS_IS_ON('DRHODR ',myThid) ) doDiagsRho = 1
111 IF ( DIAGNOSTICS_IS_ON('RHOANOSQ',myThid) .OR.
112 & DIAGNOSTICS_IS_ON('URHOMASS',myThid) .OR.
113 & DIAGNOSTICS_IS_ON('VRHOMASS',myThid) .OR.
114 & DIAGNOSTICS_IS_ON('WRHOMASS',myThid) .OR.
115 & DIAGNOSTICS_IS_ON('WRHOMASS',myThid) ) doDiagsRho = 2
116 ENDIF
117 #endif /* ALLOW_DIAGNOSTICS */
118
119 #ifdef ALLOW_THSICE
120 IF ( useThSIce .AND. fluidIsWater ) THEN
121 #ifdef ALLOW_DEBUG
122 IF ( debugLevel .GE. debLevB )
123 & CALL DEBUG_CALL('THSICE_MAIN',myThid)
124 #endif
125 C-- Step forward Therm.Sea-Ice variables
126 C and modify forcing terms including effects from ice
127 CALL TIMER_START('THSICE_MAIN [DO_OCEANIC_PHYS]', myThid)
128 CALL THSICE_MAIN( myTime, myIter, myThid )
129 CALL TIMER_STOP( 'THSICE_MAIN [DO_OCEANIC_PHYS]', myThid)
130 ENDIF
131 #endif /* ALLOW_THSICE */
132
133 #ifdef ALLOW_SHELFICE
134 IF ( useShelfIce .AND. fluidIsWater ) THEN
135 #ifdef ALLOW_DEBUG
136 IF ( debugLevel .GE. debLevB )
137 & CALL DEBUG_CALL('SHELFICE_THERMODYNAMICS',myThid)
138 #endif
139 C compute temperature and (virtual) salt flux at the
140 C shelf-ice ocean interface
141 CALL TIMER_START('SHELFICE_THERMODYNAMICS [DO_OCEANIC_PHYS]',
142 & myThid)
143 CALL SHELFICE_THERMODYNAMICS( myTime, myIter, myThid )
144 CALL TIMER_STOP( 'SHELFICE_THERMODYNAMICS [DO_OCEANIC_PHYS]',
145 & myThid)
146 ENDIF
147 #endif /* ALLOW_SHELFICE */
148
149 C-- Freeze water at the surface
150 #ifdef ALLOW_AUTODIFF_TAMC
151 CADJ STORE theta = comlev1, key = ikey_dynamics
152 #endif
153 IF ( allowFreezing
154 & .AND. .NOT. useSEAICE
155 & .AND. .NOT. useThSIce ) THEN
156 CALL FREEZE_SURFACE( myTime, myIter, myThid )
157 ENDIF
158
159 #ifdef COMPONENT_MODULE
160 # ifndef ALLOW_AIM
161 C-- Apply imported data (from coupled interface) to forcing fields
162 C jmc: do not know precisely where to put this call (bf or af thSIce ?)
163 IF ( useCoupler ) THEN
164 CALL OCN_APPLY_IMPORT( .TRUE., myTime, myIter, myThid )
165 ENDIF
166 # endif
167 #endif /* COMPONENT_MODULE */
168
169 #ifdef ALLOW_AUTODIFF_TAMC
170 C-- HPF directive to help TAMC
171 CHPF$ INDEPENDENT
172 #endif /* ALLOW_AUTODIFF_TAMC */
173 DO bj=myByLo(myThid),myByHi(myThid)
174 #ifdef ALLOW_AUTODIFF_TAMC
175 C-- HPF directive to help TAMC
176 CHPF$ INDEPENDENT
177 #endif /* ALLOW_AUTODIFF_TAMC */
178 DO bi=myBxLo(myThid),myBxHi(myThid)
179
180 #ifdef ALLOW_AUTODIFF_TAMC
181 act1 = bi - myBxLo(myThid)
182 max1 = myBxHi(myThid) - myBxLo(myThid) + 1
183 act2 = bj - myByLo(myThid)
184 max2 = myByHi(myThid) - myByLo(myThid) + 1
185 act3 = myThid - 1
186 max3 = nTx*nTy
187 act4 = ikey_dynamics - 1
188 itdkey = (act1 + 1) + act2*max1
189 & + act3*max1*max2
190 & + act4*max1*max2*max3
191 #endif /* ALLOW_AUTODIFF_TAMC */
192
193 C-- Set up work arrays with valid (i.e. not NaN) values
194 C These inital values do not alter the numerical results. They
195 C just ensure that all memory references are to valid floating
196 C point numbers. This prevents spurious hardware signals due to
197 C uninitialised but inert locations.
198
199 DO j=1-OLy,sNy+OLy
200 DO i=1-OLx,sNx+OLx
201 rhok (i,j) = 0. _d 0
202 rhoKM1 (i,j) = 0. _d 0
203 ENDDO
204 ENDDO
205
206 DO k=1,Nr
207 DO j=1-OLy,sNy+OLy
208 DO i=1-OLx,sNx+OLx
209 C This is currently also used by IVDC and Diagnostics
210 sigmaX(i,j,k) = 0. _d 0
211 sigmaY(i,j,k) = 0. _d 0
212 sigmaR(i,j,k) = 0. _d 0
213 #ifdef ALLOW_AUTODIFF_TAMC
214 cph all the following init. are necessary for TAF
215 cph although some of these are re-initialised later.
216 IVDConvCount(i,j,k,bi,bj) = 0.
217 # ifdef ALLOW_GMREDI
218 Kwx(i,j,k,bi,bj) = 0. _d 0
219 Kwy(i,j,k,bi,bj) = 0. _d 0
220 Kwz(i,j,k,bi,bj) = 0. _d 0
221 # ifdef GM_NON_UNITY_DIAGONAL
222 Kux(i,j,k,bi,bj) = 0. _d 0
223 Kvy(i,j,k,bi,bj) = 0. _d 0
224 # endif
225 # ifdef GM_EXTRA_DIAGONAL
226 Kuz(i,j,k,bi,bj) = 0. _d 0
227 Kvz(i,j,k,bi,bj) = 0. _d 0
228 # endif
229 # ifdef GM_BOLUS_ADVEC
230 GM_PsiX(i,j,k,bi,bj) = 0. _d 0
231 GM_PsiY(i,j,k,bi,bj) = 0. _d 0
232 # endif
233 # ifdef GM_VISBECK_VARIABLE_K
234 VisbeckK(i,j,bi,bj) = 0. _d 0
235 # endif
236 # endif /* ALLOW_GMREDI */
237 #endif /* ALLOW_AUTODIFF_TAMC */
238 ENDDO
239 ENDDO
240 ENDDO
241
242 iMin = 1-OLx
243 iMax = sNx+OLx
244 jMin = 1-OLy
245 jMax = sNy+OLy
246
247 #ifdef ALLOW_AUTODIFF_TAMC
248 CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
249 CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
250 CADJ STORE totphihyd(:,:,:,bi,bj)
251 CADJ & = comlev1_bibj, key=itdkey, byte=isbyte
252 # ifdef ALLOW_KPP
253 CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
254 CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
255 # endif
256 #endif /* ALLOW_AUTODIFF_TAMC */
257
258 #ifdef ALLOW_DEBUG
259 IF ( debugLevel .GE. debLevB )
260 & CALL DEBUG_MSG('ENTERING UPWARD K LOOP',myThid)
261 #endif
262
263 C-- Start of diagnostic loop
264 DO k=Nr,1,-1
265
266 #ifdef ALLOW_AUTODIFF_TAMC
267 C? Patrick, is this formula correct now that we change the loop range?
268 C? Do we still need this?
269 cph kkey formula corrected.
270 cph Needed for rhok, rhokm1, in the case useGMREDI.
271 kkey = (itdkey-1)*Nr + k
272 #endif /* ALLOW_AUTODIFF_TAMC */
273
274 C-- Calculate gradients of potential density for isoneutral
275 C slope terms (e.g. GM/Redi tensor or IVDC diffusivity)
276 c IF ( k.GT.1 .AND. (useGMRedi.OR.ivdc_kappa.NE.0.) ) THEN
277 IF ( useGMRedi .OR. (k.GT.1 .AND. ivdc_kappa.NE.0.)
278 & .OR. doDiagsRho.GE.1 ) THEN
279 #ifdef ALLOW_DEBUG
280 IF ( debugLevel .GE. debLevB )
281 & CALL DEBUG_CALL('FIND_RHO',myThid)
282 #endif
283 #ifdef ALLOW_AUTODIFF_TAMC
284 CADJ STORE theta(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
285 CADJ STORE salt (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
286 #endif /* ALLOW_AUTODIFF_TAMC */
287 CALL FIND_RHO(
288 I bi, bj, iMin, iMax, jMin, jMax, k, k,
289 I theta, salt,
290 O rhoK,
291 I myThid )
292
293 IF (k.GT.1) THEN
294 #ifdef ALLOW_AUTODIFF_TAMC
295 CADJ STORE theta(:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
296 CADJ STORE salt (:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
297 #endif /* ALLOW_AUTODIFF_TAMC */
298 CALL FIND_RHO(
299 I bi, bj, iMin, iMax, jMin, jMax, k-1, k,
300 I theta, salt,
301 O rhoKm1,
302 I myThid )
303 ENDIF
304 #ifdef ALLOW_DEBUG
305 IF ( debugLevel .GE. debLevB )
306 & CALL DEBUG_CALL('GRAD_SIGMA',myThid)
307 #endif
308 CALL GRAD_SIGMA(
309 I bi, bj, iMin, iMax, jMin, jMax, k,
310 I rhoK, rhoKm1, rhoK,
311 O sigmaX, sigmaY, sigmaR,
312 I myThid )
313 ENDIF
314
315 #ifdef ALLOW_AUTODIFF_TAMC
316 ctest# ifndef GM_EXCLUDE_CLIPPING
317 CADJ STORE rhok (:,:) = comlev1_bibj_k , key=kkey, byte=isbyte
318 ctest# endif
319 CADJ STORE rhokm1 (:,:) = comlev1_bibj_k , key=kkey, byte=isbyte
320 #endif /* ALLOW_AUTODIFF_TAMC */
321 C-- Implicit Vertical Diffusion for Convection
322 c ==> should use sigmaR !!!
323 IF (k.GT.1 .AND. ivdc_kappa.NE.0.) THEN
324 #ifdef ALLOW_DEBUG
325 IF ( debugLevel .GE. debLevB )
326 & CALL DEBUG_CALL('CALC_IVDC',myThid)
327 #endif
328 CALL CALC_IVDC(
329 I bi, bj, iMin, iMax, jMin, jMax, k,
330 I rhoKm1, rhoK,
331 I myTime, myIter, myThid)
332 ENDIF
333
334 #ifdef ALLOW_DIAGNOSTICS
335 IF ( doDiagsRho.GE.2 ) THEN
336 CALL DIAGS_RHO( k, bi, bj,
337 I rhoK, rhoKm1,
338 I myTime, myIter, myThid)
339 ENDIF
340 #endif
341
342 C-- end of diagnostic k loop (Nr:1)
343 ENDDO
344
345 #ifdef ALLOW_DIAGNOSTICS
346 c IF ( useDiagnostics .AND.
347 c & (useGMRedi .OR. ivdc_kappa.NE.0.) ) THEN
348 IF ( doDiagsRho.GE.1 ) THEN
349 CALL DIAGNOSTICS_FILL (sigmaR, 'DRHODR ', 0, Nr,
350 & 2, bi, bj, myThid)
351 ENDIF
352 #endif
353
354 #ifdef ALLOW_OBCS
355 C-- Calculate future values on open boundaries
356 IF (useOBCS) THEN
357 #ifdef ALLOW_DEBUG
358 IF ( debugLevel .GE. debLevB )
359 & CALL DEBUG_CALL('OBCS_CALC',myThid)
360 #endif
361 CALL OBCS_CALC( bi, bj, myTime+deltaTclock, myIter+1,
362 I uVel, vVel, wVel, theta, salt,
363 I myThid )
364 ENDIF
365 #endif /* ALLOW_OBCS */
366
367 #ifndef ALLOW_AUTODIFF_TAMC
368 IF ( fluidIsWater ) THEN
369 #endif
370 #ifdef ALLOW_BALANCE_FLUXES
371 C balance fluxes
372 IF ( balanceEmPmR )
373 & CALL REMOVE_MEAN_RS( 1, EmPmR, maskH, maskH, rA, drF,
374 & 'EmPmR', myTime, myThid )
375 IF ( balanceQnet )
376 & CALL REMOVE_MEAN_RS( 1, Qnet, maskH, maskH, rA, drF,
377 & 'Qnet ', myTime, myThid )
378 #endif /* ALLOW_BALANCE_FLUXES */
379 C-- Determines forcing terms based on external fields
380 C relaxation terms, etc.
381 #ifdef ALLOW_DEBUG
382 IF ( debugLevel .GE. debLevB )
383 & CALL DEBUG_CALL('EXTERNAL_FORCING_SURF',myThid)
384 #endif
385 #ifdef ALLOW_AUTODIFF_TAMC
386 CADJ STORE EmPmR(:,:,bi,bj)
387 CADJ & = comlev1_bibj, key=itdkey, byte=isbyte
388 CADJ STORE PmEpR(:,:,bi,bj)
389 CADJ & = comlev1_bibj, key=itdkey, byte=isbyte
390 #endif
391 CALL EXTERNAL_FORCING_SURF(
392 I bi, bj, iMin, iMax, jMin, jMax,
393 I myTime, myIter, myThid )
394 #ifndef ALLOW_AUTODIFF_TAMC
395 ENDIF
396 #endif
397
398 #ifdef ALLOW_AUTODIFF_TAMC
399 cph needed for KPP
400 CADJ STORE surfaceForcingU(:,:,bi,bj)
401 CADJ & = comlev1_bibj, key=itdkey, byte=isbyte
402 CADJ STORE surfaceForcingV(:,:,bi,bj)
403 CADJ & = comlev1_bibj, key=itdkey, byte=isbyte
404 CADJ STORE surfaceForcingS(:,:,bi,bj)
405 CADJ & = comlev1_bibj, key=itdkey, byte=isbyte
406 CADJ STORE surfaceForcingT(:,:,bi,bj)
407 CADJ & = comlev1_bibj, key=itdkey, byte=isbyte
408 CADJ STORE surfaceForcingTice(:,:,bi,bj)
409 CADJ & = comlev1_bibj, key=itdkey, byte=isbyte
410 #endif /* ALLOW_AUTODIFF_TAMC */
411
412 #ifdef ALLOW_GMREDI
413
414 #ifdef ALLOW_AUTODIFF_TAMC
415 # ifndef GM_EXCLUDE_CLIPPING
416 cph storing here is needed only for one GMREDI_OPTIONS:
417 cph define GM_BOLUS_ADVEC
418 cph keep it although TAF says you dont need to.
419 cph but I've avoided the #ifdef for now, in case more things change
420 CADJ STORE sigmaX(:,:,:) = comlev1_bibj, key=itdkey, byte=isbyte
421 CADJ STORE sigmaY(:,:,:) = comlev1_bibj, key=itdkey, byte=isbyte
422 CADJ STORE sigmaR(:,:,:) = comlev1_bibj, key=itdkey, byte=isbyte
423 # endif
424 #endif /* ALLOW_AUTODIFF_TAMC */
425
426 C-- Calculate iso-neutral slopes for the GM/Redi parameterisation
427 IF (useGMRedi) THEN
428 #ifdef ALLOW_DEBUG
429 IF ( debugLevel .GE. debLevB )
430 & CALL DEBUG_CALL('GMREDI_CALC_TENSOR',myThid)
431 #endif
432 CALL GMREDI_CALC_TENSOR(
433 I bi, bj, iMin, iMax, jMin, jMax,
434 I sigmaX, sigmaY, sigmaR,
435 I myThid )
436 #ifdef ALLOW_AUTODIFF_TAMC
437 ELSE
438 CALL GMREDI_CALC_TENSOR_DUMMY(
439 I bi, bj, iMin, iMax, jMin, jMax,
440 I sigmaX, sigmaY, sigmaR,
441 I myThid )
442 #endif /* ALLOW_AUTODIFF_TAMC */
443 ENDIF
444
445 #endif /* ALLOW_GMREDI */
446
447 #ifdef ALLOW_KPP
448 C-- Compute KPP mixing coefficients
449 IF (useKPP) THEN
450 #ifdef ALLOW_DEBUG
451 IF ( debugLevel .GE. debLevB )
452 & CALL DEBUG_CALL('KPP_CALC',myThid)
453 #endif
454 CALL KPP_CALC(
455 I bi, bj, myTime, myThid )
456 #ifdef ALLOW_AUTODIFF_TAMC
457 ELSE
458 CALL KPP_CALC_DUMMY(
459 I bi, bj, myTime, myThid )
460 #endif /* ALLOW_AUTODIFF_TAMC */
461 ENDIF
462
463 #endif /* ALLOW_KPP */
464
465 #ifdef ALLOW_PP81
466 C-- Compute PP81 mixing coefficients
467 IF (usePP81) THEN
468 #ifdef ALLOW_DEBUG
469 IF ( debugLevel .GE. debLevB )
470 & CALL DEBUG_CALL('PP81_CALC',myThid)
471 #endif
472 CALL PP81_CALC(
473 I bi, bj, myTime, myThid )
474 ENDIF
475 #endif /* ALLOW_PP81 */
476
477 #ifdef ALLOW_MY82
478 C-- Compute MY82 mixing coefficients
479 IF (useMY82) THEN
480 #ifdef ALLOW_DEBUG
481 IF ( debugLevel .GE. debLevB )
482 & CALL DEBUG_CALL('MY82_CALC',myThid)
483 #endif
484 CALL MY82_CALC(
485 I bi, bj, myTime, myThid )
486 ENDIF
487 #endif /* ALLOW_MY82 */
488
489 #ifdef ALLOW_GGL90
490 C-- Compute GGL90 mixing coefficients
491 IF (useGGL90) THEN
492 #ifdef ALLOW_DEBUG
493 IF ( debugLevel .GE. debLevB )
494 & CALL DEBUG_CALL('GGL90_CALC',myThid)
495 #endif
496 CALL GGL90_CALC(
497 I bi, bj, myTime, myThid )
498 ENDIF
499 #endif /* ALLOW_GGL90 */
500
501 #ifdef ALLOW_TIMEAVE
502 IF ( taveFreq.GT. 0. _d 0 .AND. fluidIsWater ) THEN
503 CALL TIMEAVE_SURF_FLUX( bi, bj, myTime, myIter, myThid)
504 ENDIF
505 IF (taveFreq.GT.0. .AND. ivdc_kappa.NE.0.) THEN
506 CALL TIMEAVE_CUMULATE(ConvectCountTave, IVDConvCount,
507 I Nr, deltaTclock, bi, bj, myThid)
508 ENDIF
509 #endif /* ALLOW_TIMEAVE */
510
511 C-- end bi,bj loops.
512 ENDDO
513 ENDDO
514
515 #ifdef ALLOW_DIAGNOSTICS
516 IF ( fluidIsWater .AND. useDiagnostics ) THEN
517 CALL DIAGS_OCEANIC_SURF_FLUX( myTime, myIter, myThid )
518 ENDIF
519 IF ( ivdc_kappa.NE.0 .AND. useDiagnostics ) THEN
520 CALL DIAGNOSTICS_FILL( IVDConvCount,'CONVADJ ',
521 & 0, Nr, 0, 1, 1, myThid )
522 ENDIF
523 #endif
524
525 #ifdef ALLOW_DEBUG
526 IF ( debugLevel .GE. debLevB )
527 & CALL DEBUG_LEAVE('DO_OCEANIC_PHYS',myThid)
528 #endif
529
530 RETURN
531 END

  ViewVC Help
Powered by ViewVC 1.1.22