/[MITgcm]/MITgcm_contrib/atnguyen/code_21Dec2012_saltplume/kpp_forcing_surf.F
ViewVC logotype

Annotation of /MITgcm_contrib/atnguyen/code_21Dec2012_saltplume/kpp_forcing_surf.F

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


Revision 1.1 - (hide annotations) (download)
Sun Apr 20 04:03:07 2014 UTC (11 years, 3 months ago) by atn
Branch: MAIN
salt plume volume fraction code mod in progress, installment 01

1 atn 1.1 C $Header: /u/gcmpack/MITgcm/pkg/kpp/kpp_forcing_surf.F,v 1.5 2009/11/21 01:27:07 dimitri Exp $
2     C $Name: $
3    
4     #include "KPP_OPTIONS.h"
5    
6     CBOP
7     C !ROUTINE: KPP_FORCING_SURF
8    
9     C !INTERFACE: ==========================================================
10     SUBROUTINE KPP_FORCING_SURF(
11     I rhoSurf, surfForcU, surfForcV,
12     I surfForcT, surfForcS, surfForcTice,
13     I Qsw,
14     #ifdef ALLOW_SALT_PLUME
15     #ifndef SALT_PLUME_VOLUME
16     I saltPlumeFlux,
17     #endif /* SALT_PLUME_VOLUME */
18     #endif /* ALLOW_SALT_PLUME */
19     I ttalpha, ssbeta,
20     O ustar, bo, bosol,
21     #ifdef ALLOW_SALT_PLUME
22     #ifndef SALT_PLUME_VOLUME
23     O boplume,
24     #endif /* SALT_PLUME_VOLUME */
25     #endif /* ALLOW_SALT_PLUME */
26     O dVsq,
27     I ikppkey, iMin, iMax, jMin, jMax, bi, bj, myTime, myThid )
28    
29     C !DESCRIPTION: \bv
30     C /==========================================================\
31     C | SUBROUTINE KPP_FORCING_SURF |
32     C | o Compute all surface related KPP fields: |
33     C | - friction velocity ustar |
34     C | - turbulent and radiative surface buoyancy forcing, |
35     C | bo and bosol, and surface haline buoyancy forcing |
36     C | boplume |
37     C | - velocity shear relative to surface squared (this is |
38     C | not really a surface affected quantity unless it is |
39     C | computed with respect to some resolution independent |
40     C | reference level, that is KPP_ESTIMATE_UREF defined ) |
41     C |==========================================================|
42     C \==========================================================/
43     IMPLICIT NONE
44    
45     c taux / rho = surfForcU (N/m^2)
46     c tauy / rho = surfForcV (N/m^2)
47     c ustar = sqrt( sqrt( taux^2 + tauy^2 ) / rho ) (m/s)
48     c bo = - g * ( alpha*surfForcT +
49     c beta *surfForcS ) / rho (m^2/s^3)
50     c bosol = - g * alpha * Qsw * drF(1) / rho (m^2/s^3)
51     c boplume = g * ( beta *saltPlumeFlux/rhoConst )/rho (m^2/s^3)
52     c------------------------------------------------------------------------
53    
54     c \ev
55    
56     C !USES: ===============================================================
57     #include "SIZE.h"
58     #include "EEPARAMS.h"
59     #include "PARAMS.h"
60     #include "GRID.h"
61     #include "DYNVARS.h"
62     #include "KPP_PARAMS.h"
63    
64     C !INPUT PARAMETERS: ===================================================
65     C Routine arguments
66     C ikppkeyb - key for storing trajectory for adjoint (taf)
67     c imin, imax, jmin, jmax - array computation indices
68     C bi, bj - array indices on which to apply calculations
69     C myTime - Current time in simulation
70     C myThid - Current thread id
71     c rhoSurf- density of surface layer (kg/m^3)
72     C surfForcU units are r_unit.m/s^2 (=m^2/s^2 if r=z)
73     C surfForcV units are r_unit.m/s^2 (=m^2/s^-2 if r=z)
74     C surfForcS units are r_unit.psu/s (=psu.m/s if r=z)
75     C - EmPmR * S_surf plus salinity relaxation*drF(1)
76     C surfForcT units are r_unit.Kelvin/s (=Kelvin.m/s if r=z)
77     C - Qnet (+Qsw) plus temp. relaxation*drF(1)
78     C -> calculate -lambda*(T(model)-T(clim))
79     C Qnet assumed to be net heat flux including ShortWave rad.
80     C surfForcTice
81     C - equivalent Temperature flux in the top level that corresponds
82     C to the melting or freezing of sea-ice.
83     C Note that the surface level temperature is modified
84     C directly by the sea-ice model in order to maintain
85     C water temperature under sea-ice at the freezing
86     C point. But we need to keep track of the
87     C equivalent amount of heat that this surface-level
88     C temperature change implies because it is used by
89     C the KPP package (kpp_calc.F and kpp_transport_t.F).
90     C Units are r_unit.K/s (=Kelvin.m/s if r=z) (>0 for ocean warming).
91     C
92     C Qsw - surface shortwave radiation (upwards positive)
93     C saltPlumeFlux - salt rejected during freezing (downward = positive)
94     C ttalpha - thermal expansion coefficient without 1/rho factor
95     C d(rho{k,k})/d(T(k)) (kg/m^3/C)
96     C ssbeta - salt expansion coefficient without 1/rho factor
97     C d(rho{k,k})/d(S(k)) (kg/m^3/PSU)
98     C !OUTPUT PARAMETERS:
99     C ustar (nx,ny) - surface friction velocity (m/s)
100     C bo (nx,ny) - surface turbulent buoyancy forcing (m^2/s^3)
101     C bosol (nx,ny) - surface radiative buoyancy forcing (m^2/s^3)
102     C boplume(nx,ny) - surface haline buoyancy forcing (m^2/s^3)
103     C dVsq (nx,ny,Nr) - velocity shear re surface squared
104     C at grid levels for bldepth (m^2/s^2)
105    
106     INTEGER ikppkey
107     INTEGER iMin, iMax, jMin, jMax
108     INTEGER bi, bj
109     INTEGER myThid
110     _RL myTime
111    
112     _RL rhoSurf (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
113     _RL surfForcU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
114     _RL surfForcV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
115     _RL surfForcT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
116     _RL surfForcS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
117     _RL surfForcTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
118     _RS Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
119     _RL TTALPHA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nrp1)
120     _RL SSBETA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nrp1)
121    
122     _RL ustar ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy )
123     _RL bo ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy )
124     _RL bosol ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy )
125     #ifdef ALLOW_SALT_PLUME
126     #ifndef SALT_PLUME_VOLUME
127     _RL saltPlumeFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
128     _RL boplume(1-OLx:sNx+OLx, 1-OLy:sNy+OLy )
129     #endif /* SALT_PLUME_VOLUME */
130     #endif /* ALLOW_SALT_PLUME */
131     _RL dVsq ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy, Nr )
132    
133     C !LOCAL VARIABLES: ====================================================
134     c Local constants
135     c minusone, p0, p5, p25, p125, p0625
136     _RL p0 , p5 , p125
137     parameter( p0=0.0, p5=0.5, p125=0.125 )
138     integer i, j, k, im1, ip1, jm1, jp1
139     _RL tempvar2
140    
141     _RL work3 ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy )
142    
143     #ifdef KPP_ESTIMATE_UREF
144     _RL tempvar1, dBdz1, dBdz2, ustarX, ustarY
145     _RL z0 ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy )
146     _RL zRef ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy )
147     _RL uRef ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy )
148     _RL vRef ( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy )
149     #endif
150     CEOP
151    
152     c------------------------------------------------------------------------
153     c friction velocity, turbulent and radiative surface buoyancy forcing
154     c -------------------------------------------------------------------
155     c taux / rho = surfForcU (N/m^2)
156     c tauy / rho = surfForcV (N/m^2)
157     c ustar = sqrt( sqrt( taux^2 + tauy^2 ) / rho ) (m/s)
158     c bo = - g * ( alpha*surfForcT +
159     c beta *surfForcS ) / rho (m^2/s^3)
160     c bosol = - g * alpha * Qsw * drF(1) / rho (m^2/s^3)
161     c boplume = g * ( beta *saltPlumeFlux/rhoConst )/rho (m^2/s^3)
162     c------------------------------------------------------------------------
163    
164     c initialize arrays to zero
165     DO j = 1-OLy, sNy+OLy
166     DO i = 1-OLx, sNx+OLx
167     ustar(i,j) = p0
168     bo (I,J) = p0
169     bosol(I,J) = p0
170     #ifdef ALLOW_SALT_PLUME
171     #ifndef SALT_PLUME_VOLUME
172     boplume(I,J) = p0
173     #endif /* SALT_PLUME_VOLUME */
174     #endif /* ALLOW_SALT_PLUME */
175     END DO
176     END DO
177    
178     DO j = jmin, jmax
179     jp1 = j + 1
180     DO i = imin, imax
181     ip1 = i+1
182     work3(i,j) =
183     & (surfForcU(i,j,bi,bj) + surfForcU(ip1,j,bi,bj)) *
184     & (surfForcU(i,j,bi,bj) + surfForcU(ip1,j,bi,bj)) +
185     & (surfForcV(i,j,bi,bj) + surfForcV(i,jp1,bi,bj)) *
186     & (surfForcV(i,j,bi,bj) + surfForcV(i,jp1,bi,bj))
187     END DO
188     END DO
189     cph(
190     CADJ store work3 = comlev1_kpp, key = ikppkey
191     cph)
192     DO j = jmin, jmax
193     jp1 = j + 1
194     DO i = imin, imax
195     ip1 = i+1
196    
197     if ( work3(i,j) .lt. (phepsi*phepsi*drF(1)*drF(1)) ) then
198     ustar(i,j) = SQRT( phepsi * p5 * drF(1) )
199     else
200     tempVar2 = SQRT( work3(i,j) ) * p5
201     ustar(i,j) = SQRT( tempVar2 )
202     endif
203    
204     END DO
205     END DO
206    
207     DO j = jmin, jmax
208     jp1 = j + 1
209     DO i = imin, imax
210     ip1 = i+1
211     bo(I,J) = - gravity *
212     & ( TTALPHA(I,J,1) * (surfForcT(i,j,bi,bj)+
213     & surfForcTice(i,j,bi,bj)) +
214     & SSBETA(I,J,1) * surfForcS(i,j,bi,bj) )
215     & / rhoSurf(I,J)
216     bosol(I,J) = gravity * TTALPHA(I,J,1) * Qsw(i,j,bi,bj) *
217     & recip_Cp*recip_rhoConst
218     & / rhoSurf(I,J)
219     END DO
220     END DO
221    
222     #ifdef ALLOW_SALT_PLUME
223     #ifndef SALT_PLUME_VOLUME
224     IF ( useSALT_PLUME ) THEN
225     DO j = jmin, jmax
226     jp1 = j + 1
227     DO i = imin, imax
228     ip1 = i+1
229     boplume(I,J) = - gravity * SSBETA(I,J,1)
230     & * saltPlumeFlux(i,j,bi,bj)
231     & * recip_rhoConst / rhoSurf(I,J)
232     END DO
233     END DO
234     ENDIF
235     #endif /* SALT_PLUME_VOLUME */
236     #endif /* ALLOW_SALT_PLUME */
237    
238     cph(
239     CADJ store ustar = comlev1_kpp, key = ikppkey
240     cph)
241    
242     #ifdef ALLOW_DIAGNOSTICS
243     IF ( useDiagnostics ) THEN
244     CALL DIAGNOSTICS_FILL(bo ,'KPPbo ',0,1,2,bi,bj,myThid)
245     CALL DIAGNOSTICS_FILL(bosol ,'KPPbosol',0,1,2,bi,bj,myThid)
246     #ifdef ALLOW_SALT_PLUME
247     #ifndef SALT_PLUME_VOLUME
248     CALL DIAGNOSTICS_FILL(boplume,'KPPboplm',0,1,2,bi,bj,myThid)
249     #endif /* SALT_PLUME_VOLUME */
250     #endif /* ALLOW_SALT_PLUME */
251     ENDIF
252     #endif /* ALLOW_DIAGNOSTICS */
253    
254     c------------------------------------------------------------------------
255     c velocity shear
256     c --------------
257     c Get velocity shear squared, averaged from "u,v-grid"
258     c onto "t-grid" (in (m/s)**2):
259     c dVsq(k)=(Uref-U(k))**2+(Vref-V(k))**2 at grid levels
260     c------------------------------------------------------------------------
261    
262     c initialize arrays to zero
263     DO k = 1, Nr
264     DO j = 1-OLy, sNy+OLy
265     DO i = 1-OLx, sNx+OLx
266     dVsq(i,j,k) = p0
267     END DO
268     END DO
269     END DO
270    
271     c dVsq computation
272    
273     #ifdef KPP_ESTIMATE_UREF
274    
275     c Get rid of vertical resolution dependence of dVsq term by
276     c estimating a surface velocity that is independent of first level
277     c thickness in the model. First determine mixed layer depth hMix.
278     c Second zRef = espilon * hMix. Third determine roughness length
279     c scale z0. Third estimate reference velocity.
280    
281     DO j = jmin, jmax
282     jp1 = j + 1
283     DO i = imin, imax
284     ip1 = i + 1
285    
286     c Determine mixed layer depth hMix as the shallowest depth at which
287     c dB/dz exceeds 5.2e-5 s^-2.
288     work1(i,j) = nzmax(i,j,bi,bj)
289     DO k = 1, Nr
290     IF ( k .LT. nzmax(i,j,bi,bj) .AND.
291     & maskC(I,J,k,bi,bj) .GT. 0. .AND.
292     & dbloc(i,j,k) / drC(k+1) .GT. dB_dz )
293     & work1(i,j) = k
294     ENDDO
295    
296     c Linearly interpolate to find hMix.
297     k = work1(i,j)
298     IF ( k .EQ. 0 .OR. nzmax(i,j,bi,bj) .EQ. 1 ) THEN
299     zRef(i,j) = p0
300     ELSEIF ( k .EQ. 1) THEN
301     dBdz2 = dbloc(i,j,1) / drC(2)
302     zRef(i,j) = drF(1) * dB_dz / dBdz2
303     ELSEIF ( k .LT. nzmax(i,j,bi,bj) ) THEN
304     dBdz1 = dbloc(i,j,k-1) / drC(k )
305     dBdz2 = dbloc(i,j,k ) / drC(k+1)
306     zRef(i,j) = rF(k) + drF(k) * (dB_dz - dBdz1) /
307     & MAX ( phepsi, dBdz2 - dBdz1 )
308     ELSE
309     zRef(i,j) = rF(k+1)
310     ENDIF
311    
312     c Compute roughness length scale z0 subject to 0 < z0
313     tempVar1 = p5 * (
314     & (uVel(i, j, 1,bi,bj)-uVel(i, j, 2,bi,bj)) *
315     & (uVel(i, j, 1,bi,bj)-uVel(i, j, 2,bi,bj)) +
316     & (uVel(ip1,j, 1,bi,bj)-uVel(ip1,j, 2,bi,bj)) *
317     & (uVel(ip1,j, 1,bi,bj)-uVel(ip1,j, 2,bi,bj)) +
318     & (vVel(i, j, 1,bi,bj)-vVel(i, j, 2,bi,bj)) *
319     & (vVel(i, j, 1,bi,bj)-vVel(i, j, 2,bi,bj)) +
320     & (vVel(i, jp1,1,bi,bj)-vVel(i, jp1,2,bi,bj)) *
321     & (vVel(i, jp1,1,bi,bj)-vVel(i, jp1,2,bi,bj)) )
322     IF ( tempVar1 .lt. (epsln*epsln) ) THEN
323     tempVar2 = epsln
324     ELSE
325     tempVar2 = SQRT ( tempVar1 )
326     ENDIF
327     z0(i,j) = rF(2) *
328     & ( rF(3) * LOG ( rF(3) / rF(2) ) /
329     & ( rF(3) - rF(2) ) -
330     & tempVar2 * vonK /
331     & MAX ( ustar(i,j), phepsi ) )
332     z0(i,j) = MAX ( z0(i,j), phepsi )
333    
334     c zRef is set to 0.1 * hMix subject to z0 <= zRef <= drF(1)
335     zRef(i,j) = MAX ( epsilon * zRef(i,j), z0(i,j) )
336     zRef(i,j) = MIN ( zRef(i,j), drF(1) )
337    
338     c Estimate reference velocity uRef and vRef.
339     uRef(i,j) = p5 * ( uVel(i,j,1,bi,bj) + uVel(ip1,j,1,bi,bj) )
340     vRef(i,j) = p5 * ( vVel(i,j,1,bi,bj) + vVel(i,jp1,1,bi,bj) )
341     IF ( zRef(i,j) .LT. drF(1) ) THEN
342     ustarX = ( surfForcU(i, j,bi,bj) +
343     & surfForcU(ip1,j,bi,bj) ) * p5 *recip_drF(1)
344     ustarY = ( surfForcV(i,j, bi,bj) +
345     & surfForcV(i,jp1,bi,bj) ) * p5 *recip_drF(1)
346     tempVar1 = ustarX * ustarX + ustarY * ustarY
347     if ( tempVar1 .lt. (epsln*epsln) ) then
348     tempVar2 = epsln
349     else
350     tempVar2 = SQRT ( tempVar1 )
351     endif
352     tempVar2 = ustar(i,j) *
353     & ( LOG ( zRef(i,j) / rF(2) ) +
354     & z0(i,j) / zRef(i,j) - z0(i,j) / rF(2) ) /
355     & vonK / tempVar2
356     uRef(i,j) = uRef(i,j) + ustarX * tempVar2
357     vRef(i,j) = vRef(i,j) + ustarY * tempVar2
358     ENDIF
359    
360     ENDDO
361     ENDDO
362    
363     DO k = 1, Nr
364     DO j = jmin, jmax
365     jm1 = j - 1
366     jp1 = j + 1
367     DO i = imin, imax
368     im1 = i - 1
369     ip1 = i + 1
370     dVsq(i,j,k) = p5 * (
371     $ (uRef(i,j) - uVel(i, j, k,bi,bj)) *
372     $ (uRef(i,j) - uVel(i, j, k,bi,bj)) +
373     $ (uRef(i,j) - uVel(ip1,j, k,bi,bj)) *
374     $ (uRef(i,j) - uVel(ip1,j, k,bi,bj)) +
375     $ (vRef(i,j) - vVel(i, j, k,bi,bj)) *
376     $ (vRef(i,j) - vVel(i, j, k,bi,bj)) +
377     $ (vRef(i,j) - vVel(i, jp1,k,bi,bj)) *
378     $ (vRef(i,j) - vVel(i, jp1,k,bi,bj)) )
379     #ifdef KPP_SMOOTH_DVSQ
380     dVsq(i,j,k) = p5 * dVsq(i,j,k) + p125 * (
381     $ (uRef(i,j) - uVel(i, jm1,k,bi,bj)) *
382     $ (uRef(i,j) - uVel(i, jm1,k,bi,bj)) +
383     $ (uRef(i,j) - uVel(ip1,jm1,k,bi,bj)) *
384     $ (uRef(i,j) - uVel(ip1,jm1,k,bi,bj)) +
385     $ (uRef(i,j) - uVel(i, jp1,k,bi,bj)) *
386     $ (uRef(i,j) - uVel(i, jp1,k,bi,bj)) +
387     $ (uRef(i,j) - uVel(ip1,jp1,k,bi,bj)) *
388     $ (uRef(i,j) - uVel(ip1,jp1,k,bi,bj)) +
389     $ (vRef(i,j) - vVel(im1,j, k,bi,bj)) *
390     $ (vRef(i,j) - vVel(im1,j, k,bi,bj)) +
391     $ (vRef(i,j) - vVel(im1,jp1,k,bi,bj)) *
392     $ (vRef(i,j) - vVel(im1,jp1,k,bi,bj)) +
393     $ (vRef(i,j) - vVel(ip1,j, k,bi,bj)) *
394     $ (vRef(i,j) - vVel(ip1,j, k,bi,bj)) +
395     $ (vRef(i,j) - vVel(ip1,jp1,k,bi,bj)) *
396     $ (vRef(i,j) - vVel(ip1,jp1,k,bi,bj)) )
397     #endif /* KPP_SMOOTH_DVSQ */
398     ENDDO
399     ENDDO
400     ENDDO
401    
402     #else /* KPP_ESTIMATE_UREF */
403    
404     DO k = 1, Nr
405     DO j = jmin, jmax
406     jm1 = j - 1
407     jp1 = j + 1
408     DO i = imin, imax
409     im1 = i - 1
410     ip1 = i + 1
411     dVsq(i,j,k) = p5 * (
412     $ (uVel(i, j, 1,bi,bj)-uVel(i, j, k,bi,bj)) *
413     $ (uVel(i, j, 1,bi,bj)-uVel(i, j, k,bi,bj)) +
414     $ (uVel(ip1,j, 1,bi,bj)-uVel(ip1,j, k,bi,bj)) *
415     $ (uVel(ip1,j, 1,bi,bj)-uVel(ip1,j, k,bi,bj)) +
416     $ (vVel(i, j, 1,bi,bj)-vVel(i, j, k,bi,bj)) *
417     $ (vVel(i, j, 1,bi,bj)-vVel(i, j, k,bi,bj)) +
418     $ (vVel(i, jp1,1,bi,bj)-vVel(i, jp1,k,bi,bj)) *
419     $ (vVel(i, jp1,1,bi,bj)-vVel(i, jp1,k,bi,bj)) )
420     #ifdef KPP_SMOOTH_DVSQ
421     dVsq(i,j,k) = p5 * dVsq(i,j,k) + p125 * (
422     $ (uVel(i, jm1,1,bi,bj)-uVel(i, jm1,k,bi,bj)) *
423     $ (uVel(i, jm1,1,bi,bj)-uVel(i, jm1,k,bi,bj)) +
424     $ (uVel(ip1,jm1,1,bi,bj)-uVel(ip1,jm1,k,bi,bj)) *
425     $ (uVel(ip1,jm1,1,bi,bj)-uVel(ip1,jm1,k,bi,bj)) +
426     $ (uVel(i, jp1,1,bi,bj)-uVel(i, jp1,k,bi,bj)) *
427     $ (uVel(i, jp1,1,bi,bj)-uVel(i, jp1,k,bi,bj)) +
428     $ (uVel(ip1,jp1,1,bi,bj)-uVel(ip1,jp1,k,bi,bj)) *
429     $ (uVel(ip1,jp1,1,bi,bj)-uVel(ip1,jp1,k,bi,bj)) +
430     $ (vVel(im1,j, 1,bi,bj)-vVel(im1,j, k,bi,bj)) *
431     $ (vVel(im1,j, 1,bi,bj)-vVel(im1,j, k,bi,bj)) +
432     $ (vVel(im1,jp1,1,bi,bj)-vVel(im1,jp1,k,bi,bj)) *
433     $ (vVel(im1,jp1,1,bi,bj)-vVel(im1,jp1,k,bi,bj)) +
434     $ (vVel(ip1,j, 1,bi,bj)-vVel(ip1,j, k,bi,bj)) *
435     $ (vVel(ip1,j, 1,bi,bj)-vVel(ip1,j, k,bi,bj)) +
436     $ (vVel(ip1,jp1,1,bi,bj)-vVel(ip1,jp1,k,bi,bj)) *
437     $ (vVel(ip1,jp1,1,bi,bj)-vVel(ip1,jp1,k,bi,bj)) )
438     #endif /* KPP_SMOOTH_DVSQ */
439     ENDDO
440     ENDDO
441     ENDDO
442    
443     #endif /* KPP_ESTIMATE_UREF */
444    
445     RETURN
446     END
447    

  ViewVC Help
Powered by ViewVC 1.1.22