/[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.23 - (hide annotations) (download)
Thu Mar 2 23:41:10 2006 UTC (18 years, 3 months ago) by heimbach
Branch: MAIN
Changes since 1.22: +7 -5 lines
Change of EmPmR in external_forcing_surf necessitates re-arranging
adjoint STORE (what a pain).

1 heimbach 1.23 C $Header: /u/gcmpack/MITgcm/model/src/do_oceanic_phys.F,v 1.22 2006/02/10 07:56:20 mlosch 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     #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 jmc 1.20 #ifdef ALLOW_TIMEAVE
39     #include "TIMEAVE_STATV.h"
40     #endif
41 mlosch 1.22 #if defined (ALLOW_BALANCE_FLUXES) && !(defined ALLOW_AUTODIFF_TAMC)
42     #include "FFIELDS.h"
43     #endif
44 jmc 1.1
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 heimbach 1.10 # ifdef EXACT_CONSERV
60     # include "SURFACE.h"
61     # endif
62 jmc 1.1 #endif /* ALLOW_AUTODIFF_TAMC */
63    
64     C !INPUT/OUTPUT PARAMETERS:
65     C == Routine arguments ==
66 jmc 1.18 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 jmc 1.1 _RL myTime
70     INTEGER myIter
71     INTEGER myThid
72    
73     C !LOCAL VARIABLES:
74     C == Local variables
75 jmc 1.18 C rhoK, rhoKM1 :: Density at current level, and level above
76     C iMin, iMax :: Ranges and sub-block indices on which calculations
77 jmc 1.1 C jMin, jMax are applied.
78 jmc 1.18 C bi, bj :: tile indices
79     C i,j,k :: loop indices
80 jmc 1.1 _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 jmc 1.18 INTEGER i, j, k
89 jmc 1.17 INTEGER doDiagsRho
90     #ifdef ALLOW_DIAGNOSTICS
91     LOGICAL DIAGNOSTICS_IS_ON
92     EXTERNAL DIAGNOSTICS_IS_ON
93     #endif /* ALLOW_DIAGNOSTICS */
94 jmc 1.1
95     CEOP
96    
97 heimbach 1.12 #ifdef ALLOW_AUTODIFF_TAMC
98     C-- dummy statement to end declaration part
99     itdkey = 1
100     #endif /* ALLOW_AUTODIFF_TAMC */
101    
102 jmc 1.1 #ifdef ALLOW_DEBUG
103 jmc 1.5 IF ( debugLevel .GE. debLevB )
104 jmc 1.1 & CALL DEBUG_ENTER('DO_OCEANIC_PHYS',myThid)
105     #endif
106    
107 jmc 1.17 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 jmc 1.5 #ifdef ALLOW_THSICE
120 jmc 1.14 IF ( useThSIce .AND. fluidIsWater ) THEN
121 jmc 1.5 #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 mlosch 1.21 #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 jmc 1.5 C-- Freeze water at the surface
150     #ifdef ALLOW_AUTODIFF_TAMC
151     CADJ STORE theta = comlev1, key = ikey_dynamics
152     #endif
153 heimbach 1.12 IF ( allowFreezing
154     & .AND. .NOT. useSEAICE
155 jmc 1.5 & .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 edhill 1.7 C jmc: do not know precisely where to put this call (bf or af thSIce ?)
163 jmc 1.5 IF ( useCoupler ) THEN
164     CALL OCN_APPLY_IMPORT( .TRUE., myTime, myIter, myThid )
165     ENDIF
166     # endif
167     #endif /* COMPONENT_MODULE */
168    
169 jmc 1.1 #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 heimbach 1.15 C-- HPF directive to help TAMC
176     CHPF$ INDEPENDENT
177 jmc 1.1 #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 heimbach 1.12 CADJ STORE totphihyd(:,:,:,bi,bj)
251 jmc 1.1 CADJ & = comlev1_bibj, key=itdkey, byte=isbyte
252 heimbach 1.10 # ifdef ALLOW_KPP
253 jmc 1.1 CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
254     CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
255 heimbach 1.10 # endif
256 jmc 1.1 #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 jmc 1.17 IF ( useGMRedi .OR. (k.GT.1 .AND. ivdc_kappa.NE.0.)
278     & .OR. doDiagsRho.GE.1 ) THEN
279 jmc 1.1 #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 heimbach 1.12 ctest# ifndef GM_EXCLUDE_CLIPPING
317 jmc 1.1 CADJ STORE rhok (:,:) = comlev1_bibj_k , key=kkey, byte=isbyte
318 heimbach 1.12 ctest# endif
319 jmc 1.1 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 jmc 1.17 #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 jmc 1.1 C-- end of diagnostic k loop (Nr:1)
343     ENDDO
344    
345 jmc 1.8 #ifdef ALLOW_DIAGNOSTICS
346 jmc 1.17 c IF ( useDiagnostics .AND.
347     c & (useGMRedi .OR. ivdc_kappa.NE.0.) ) THEN
348     IF ( doDiagsRho.GE.1 ) THEN
349 jmc 1.16 CALL DIAGNOSTICS_FILL (sigmaR, 'DRHODR ', 0, Nr,
350     & 2, bi, bj, myThid)
351 jmc 1.8 ENDIF
352     #endif
353    
354 jmc 1.1 #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 heimbach 1.11 CALL OBCS_CALC( bi, bj, myTime+deltaTclock, myIter+1,
362 jmc 1.1 I uVel, vVel, wVel, theta, salt,
363     I myThid )
364     ENDIF
365     #endif /* ALLOW_OBCS */
366    
367     #ifndef ALLOW_AUTODIFF_TAMC
368 jmc 1.14 IF ( fluidIsWater ) THEN
369 jmc 1.1 #endif
370     C-- Determines forcing terms based on external fields
371     C relaxation terms, etc.
372     #ifdef ALLOW_DEBUG
373     IF ( debugLevel .GE. debLevB )
374     & CALL DEBUG_CALL('EXTERNAL_FORCING_SURF',myThid)
375     #endif
376 heimbach 1.23 #ifdef ALLOW_AUTODIFF_TAMC
377     CADJ STORE EmPmR(:,:,bi,bj)
378     CADJ & = comlev1_bibj, key=itdkey, byte=isbyte
379     CADJ STORE PmEpR(:,:,bi,bj)
380     CADJ & = comlev1_bibj, key=itdkey, byte=isbyte
381     #endif
382 jmc 1.1 CALL EXTERNAL_FORCING_SURF(
383     I bi, bj, iMin, iMax, jMin, jMax,
384     I myTime, myIter, myThid )
385     #ifndef ALLOW_AUTODIFF_TAMC
386     ENDIF
387     #endif
388    
389     #ifdef ALLOW_AUTODIFF_TAMC
390     cph needed for KPP
391 jmc 1.4 CADJ STORE surfaceForcingU(:,:,bi,bj)
392 jmc 1.1 CADJ & = comlev1_bibj, key=itdkey, byte=isbyte
393 jmc 1.4 CADJ STORE surfaceForcingV(:,:,bi,bj)
394 jmc 1.1 CADJ & = comlev1_bibj, key=itdkey, byte=isbyte
395 jmc 1.4 CADJ STORE surfaceForcingS(:,:,bi,bj)
396 jmc 1.1 CADJ & = comlev1_bibj, key=itdkey, byte=isbyte
397 jmc 1.4 CADJ STORE surfaceForcingT(:,:,bi,bj)
398 jmc 1.1 CADJ & = comlev1_bibj, key=itdkey, byte=isbyte
399 jmc 1.4 CADJ STORE surfaceForcingTice(:,:,bi,bj)
400 jmc 1.1 CADJ & = comlev1_bibj, key=itdkey, byte=isbyte
401     #endif /* ALLOW_AUTODIFF_TAMC */
402    
403     #ifdef ALLOW_GMREDI
404    
405     #ifdef ALLOW_AUTODIFF_TAMC
406 heimbach 1.10 # ifndef GM_EXCLUDE_CLIPPING
407 jmc 1.1 cph storing here is needed only for one GMREDI_OPTIONS:
408     cph define GM_BOLUS_ADVEC
409 heimbach 1.10 cph keep it although TAF says you dont need to.
410 jmc 1.1 cph but I've avoided the #ifdef for now, in case more things change
411     CADJ STORE sigmaX(:,:,:) = comlev1_bibj, key=itdkey, byte=isbyte
412     CADJ STORE sigmaY(:,:,:) = comlev1_bibj, key=itdkey, byte=isbyte
413 heimbach 1.12 CADJ STORE sigmaR(:,:,:) = comlev1_bibj, key=itdkey, byte=isbyte
414 heimbach 1.10 # endif
415 jmc 1.1 #endif /* ALLOW_AUTODIFF_TAMC */
416    
417     C-- Calculate iso-neutral slopes for the GM/Redi parameterisation
418     IF (useGMRedi) THEN
419     #ifdef ALLOW_DEBUG
420     IF ( debugLevel .GE. debLevB )
421     & CALL DEBUG_CALL('GMREDI_CALC_TENSOR',myThid)
422     #endif
423     CALL GMREDI_CALC_TENSOR(
424     I bi, bj, iMin, iMax, jMin, jMax,
425     I sigmaX, sigmaY, sigmaR,
426     I myThid )
427     #ifdef ALLOW_AUTODIFF_TAMC
428     ELSE
429     CALL GMREDI_CALC_TENSOR_DUMMY(
430     I bi, bj, iMin, iMax, jMin, jMax,
431     I sigmaX, sigmaY, sigmaR,
432     I myThid )
433     #endif /* ALLOW_AUTODIFF_TAMC */
434     ENDIF
435    
436     #endif /* ALLOW_GMREDI */
437    
438     #ifdef ALLOW_KPP
439     C-- Compute KPP mixing coefficients
440     IF (useKPP) THEN
441     #ifdef ALLOW_DEBUG
442     IF ( debugLevel .GE. debLevB )
443     & CALL DEBUG_CALL('KPP_CALC',myThid)
444     #endif
445     CALL KPP_CALC(
446     I bi, bj, myTime, myThid )
447     #ifdef ALLOW_AUTODIFF_TAMC
448     ELSE
449     CALL KPP_CALC_DUMMY(
450     I bi, bj, myTime, myThid )
451     #endif /* ALLOW_AUTODIFF_TAMC */
452     ENDIF
453    
454     #endif /* ALLOW_KPP */
455    
456 mlosch 1.6 #ifdef ALLOW_PP81
457     C-- Compute PP81 mixing coefficients
458     IF (usePP81) THEN
459     #ifdef ALLOW_DEBUG
460     IF ( debugLevel .GE. debLevB )
461     & CALL DEBUG_CALL('PP81_CALC',myThid)
462     #endif
463     CALL PP81_CALC(
464     I bi, bj, myTime, myThid )
465     ENDIF
466     #endif /* ALLOW_PP81 */
467    
468     #ifdef ALLOW_MY82
469     C-- Compute MY82 mixing coefficients
470     IF (useMY82) THEN
471     #ifdef ALLOW_DEBUG
472     IF ( debugLevel .GE. debLevB )
473     & CALL DEBUG_CALL('MY82_CALC',myThid)
474     #endif
475     CALL MY82_CALC(
476     I bi, bj, myTime, myThid )
477     ENDIF
478     #endif /* ALLOW_MY82 */
479    
480 mlosch 1.9 #ifdef ALLOW_GGL90
481     C-- Compute GGL90 mixing coefficients
482     IF (useGGL90) THEN
483     #ifdef ALLOW_DEBUG
484     IF ( debugLevel .GE. debLevB )
485     & CALL DEBUG_CALL('GGL90_CALC',myThid)
486     #endif
487     CALL GGL90_CALC(
488     I bi, bj, myTime, myThid )
489     ENDIF
490     #endif /* ALLOW_GGL90 */
491    
492 jmc 1.20 #ifdef ALLOW_TIMEAVE
493     IF ( taveFreq.GT. 0. _d 0 .AND. fluidIsWater ) THEN
494     CALL TIMEAVE_SURF_FLUX( bi, bj, myTime, myIter, myThid)
495     ENDIF
496     IF (taveFreq.GT.0. .AND. ivdc_kappa.NE.0.) THEN
497     CALL TIMEAVE_CUMULATE(ConvectCountTave, IVDConvCount,
498     I Nr, deltaTclock, bi, bj, myThid)
499     ENDIF
500     #endif /* ALLOW_TIMEAVE */
501    
502 jmc 1.1 C-- end bi,bj loops.
503     ENDDO
504     ENDDO
505    
506 mlosch 1.22 #ifdef ALLOW_BALANCE_FLUXES
507     C balance fluxes
508     if ( balanceEmPmR )
509     & CALL REMOVE_MEAN_RS( 1, EmPmR, maskH, maskH, rA, drF,
510     & 'EmPmR', myTime, myThid )
511     if ( balanceQnet )
512     & CALL REMOVE_MEAN_RS( 1, Qnet, maskH, maskH, rA, drF,
513     & 'Qnet ', myTime, myThid )
514     #endif /* ALLOW_BALANCE_FLUXES */
515    
516 jmc 1.18 #ifdef ALLOW_DIAGNOSTICS
517     IF ( fluidIsWater .AND. useDiagnostics ) THEN
518     CALL DIAGS_OCEANIC_SURF_FLUX( myTime, myIter, myThid )
519     ENDIF
520 jmc 1.19 IF ( ivdc_kappa.NE.0 .AND. useDiagnostics ) THEN
521     CALL DIAGNOSTICS_FILL( IVDConvCount,'CONVADJ ',
522     & 0, Nr, 0, 1, 1, myThid )
523     ENDIF
524 jmc 1.18 #endif
525    
526 jmc 1.1 #ifdef ALLOW_DEBUG
527     IF ( debugLevel .GE. debLevB )
528     & CALL DEBUG_LEAVE('DO_OCEANIC_PHYS',myThid)
529     #endif
530    
531     RETURN
532     END

  ViewVC Help
Powered by ViewVC 1.1.22