/[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.108 - (hide annotations) (download)
Sun Aug 7 21:40:39 2011 UTC (12 years, 10 months ago) by dimitri
Branch: MAIN
Changes since 1.107: +4 -1 lines
adding some comments

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

  ViewVC Help
Powered by ViewVC 1.1.22