New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
trabbl_adv.h90 in trunk/NEMO/OPA_SRC/TRA – NEMO

source: trunk/NEMO/OPA_SRC/TRA/trabbl_adv.h90 @ 1601

Last change on this file since 1601 was 1601, checked in by ctlod, 15 years ago

Doctor naming of OPA namelist variables , see ticket: #526

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 19.2 KB
Line 
1   !!----------------------------------------------------------------------
2   !!                     ***  trabbl_adv.h90  ***
3   !!----------------------------------------------------------------------
4   !! History :  8.5  !  02-12  (A. de Miranda, G. Madec)  Original Code
5   !!            9.0  !  04-01  (A. de Miranda, G. Madec, J.M. Molines )
6   !!----------------------------------------------------------------------     
7
8   !!----------------------------------------------------------------------
9   !!   OPA 9.0 , LOCEAN-IPSL (2005)
10   !! $Id$
11   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
12   !!----------------------------------------------------------------------
13
14   SUBROUTINE tra_bbl_adv( kt )
15      !!----------------------------------------------------------------------
16      !!                  ***  ROUTINE tra_bbl_adv  ***
17      !!                   
18      !! ** Purpose :   Compute the before tracer (t & s) trend associated
19      !!     with the bottom boundary layer and add it to the general trend
20      !!     of tracer equations. The bottom boundary layer is supposed to be
21      !!     both an advective and diffusive bottom boundary layer.
22      !!
23      !! ** Method  :   Computes the bottom boundary horizontal and vertical
24      !!      advection terms. Add it to the general trend : ta =ta + adv_bbl.
25      !!        When the product grad( rho) * grad(h) < 0 (where grad is a
26      !!      along bottom slope gradient) an additional lateral 2nd order
27      !!      diffusion along the bottom slope is added to the general
28      !!      tracer trend, otherwise the additional trend is set to 0.
29      !!      Second order operator (laplacian type) with variable coefficient
30      !!      computed as follow for temperature (idem on s):
31      !!         difft = 1/(e1t*e2t*e3t) { di-1[ ahbt e2u*e3u/e1u di[ztb] ]
32      !!                                 + dj-1[ ahbt e1v*e3v/e2v dj[ztb] ] }
33      !!      where ztb is a 2D array: the bottom ocean te;perature and ahtb
34      !!      is a time and space varying diffusive coefficient defined by:
35      !!         ahbt = zahbp    if grad(rho).grad(h) < 0
36      !!              = 0.       otherwise.
37      !!      Note that grad(.) is the along bottom slope gradient. grad(rho)
38      !!      is evaluated using the local density (i.e. referenced at the
39      !!      local depth). Typical value of ahbt is 2000 m2/s (equivalent to
40      !!      a downslope velocity of 20 cm/s if the condition for slope
41      !!      convection is satified)
42      !!        Add this before trend to the general trend (ta,sa) of the
43      !!      botton ocean tracer point:
44      !!              ta = ta + difft
45      !!
46      !! ** Action  : - update (ta,sa) at the bottom level with the bottom
47      !!                boundary layer trend
48      !!
49      !! References : Beckmann, A., and R. Doscher, 1997, J. Phys.Oceanogr., 581-591.
50      !!----------------------------------------------------------------------     
51      USE eosbn2                      ! equation of state
52      USE oce, ONLY :   ztrdt => ua   ! use ua as 3D workspace   
53      USE oce, ONLY :   ztrds => va   ! use va as 3D workspace
54      USE iom                           
55      !!
56      INTEGER, INTENT( in ) ::   kt   ! ocean time-step
57      !!
58      INTEGER  ::   ji, jj, jk        ! dummy loop indices
59      INTEGER  ::   ik                ! temporary integers
60      INTEGER  ::   iku, iku1, iku2   !    "          "
61      INTEGER  ::   ikv, ikv1, ikv2   !    "          "
62      REAL(wp) ::   zsign, zh, zalbet     ! temporary scalars
63      REAL(wp) ::   zgdrho, zbtr          !    "         "
64      REAL(wp) ::   zbt, zsigna           !    "         "
65      REAL(wp) ::   zfui, ze3u, zt, zta   !    "         "
66      REAL(wp) ::   zfvj, ze3v, zs, zsa   !    "         "
67      REAL(wp), DIMENSION(jpi,jpj)     ::   zalphax, zwu, zunb   ! temporary 2D workspace
68      REAL(wp), DIMENSION(jpi,jpj)     ::   zalphay, zwv, zvnb   !    "             "
69      REAL(wp), DIMENSION(jpi,jpj)     ::   zwx, zwy, zww, zwz   !    "             "
70      REAL(wp), DIMENSION(jpi,jpj)     ::   ztbb, zsbb           !    "             "
71      REAL(wp), DIMENSION(jpi,jpj)     ::   ztnb, zsnb, zdep     !    "             "
72      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zhdivn               ! temporary 3D workspace
73      REAL(wp) ::   fsalbt, pft, pfs, pfh   ! statement function
74      !!----------------------------------------------------------------------
75      ! ratio alpha/beta
76      ! ================
77      !  fsalbt: ratio of thermal over saline expension coefficients
78      !       pft :  potential temperature in degrees celcius
79      !       pfs :  salinity anomaly (s-35) in psu
80      !       pfh :  depth in meters
81
82      fsalbt( pft, pfs, pfh ) =                                              &
83         ( ( ( -0.255019e-07 * pft + 0.298357e-05 ) * pft                    &
84                                   - 0.203814e-03 ) * pft                    &
85                                   + 0.170907e-01 ) * pft                    &
86                                   + 0.665157e-01                            &
87         +(-0.678662e-05 * pfs - 0.846960e-04 * pft + 0.378110e-02 ) * pfs   &
88         +  ( ( - 0.302285e-13 * pfh                                         &
89                - 0.251520e-11 * pfs                                         &
90                + 0.512857e-12 * pft * pft          ) * pfh                  &
91                                     - 0.164759e-06   * pfs                  &
92             +(   0.791325e-08 * pft - 0.933746e-06 ) * pft                  &
93                                     + 0.380374e-04 ) * pfh
94      !!----------------------------------------------------------------------
95
96      IF( kt == nit000 )   CALL tra_bbl_init    ! initialization at first time-step
97
98      ! 1. 2D fields of bottom temperature and salinity, and bottom slope
99      ! -----------------------------------------------------------------
100      ! mbathy= number of w-level, minimum value=1 (cf dommsk.F)
101
102#if defined key_vectopt_loop
103      DO jj = 1, 1
104         DO ji = 1, jpij   ! vector opt. (forced unrolling)
105#else
106      DO jj = 1, jpj
107         DO ji = 1, jpi
108#endif
109            ik = mbkt(ji,jj)                               ! index of the bottom ocean T-level
110            ztnb(ji,jj) = tn(ji,jj,ik)
111            zsnb(ji,jj) = sn(ji,jj,ik)
112            ztbb(ji,jj) = tb(ji,jj,ik)
113            zsbb(ji,jj) = sb(ji,jj,ik)
114            zdep(ji,jj) = fsdept(ji,jj,ik)                 ! depth of the ocean bottom T-level
115
116            zunb(ji,jj) = un(ji,jj,mbku(ji,jj))
117            zvnb(ji,jj) = vn(ji,jj,mbkv(ji,jj))
118         END DO
119      END DO
120
121
122      ! 2. Criteria of additional bottom diffusivity: grad(rho).grad(h)<0
123      ! --------------------------------------------
124      ! Sign of the local density gradient along the i- and j-slopes
125      ! multiplied by the slope of the ocean bottom
126
127      SELECT CASE ( nn_eos )
128      !
129      CASE ( 0 )               ! Jackett and McDougall (1994) formulation
130         !
131         DO jj = 1, jpjm1
132            DO ji = 1, fs_jpim1   ! vector opt.
133               !   ... temperature, salinity anomalie and depth
134               zt = 0.5 * ( ztnb(ji,jj) + ztnb(ji+1,jj) )
135               zs = 0.5 * ( zsnb(ji,jj) + zsnb(ji+1,jj) ) - 35.0
136               zh = 0.5 * ( zdep(ji,jj) + zdep(ji+1,jj) )
137               !   ... masked ratio alpha/beta
138               zalbet = fsalbt( zt, zs, zh ) * umask(ji,jj,1)
139               !   ... local density gradient along i-bathymetric slope
140               zgdrho = zalbet * ( ztnb(ji+1,jj) - ztnb(ji,jj) )   &
141                  &       -      ( zsnb(ji+1,jj) - zsnb(ji,jj) )
142               zgdrho = zgdrho * umask(ji,jj,1)
143               !   ... sign of local i-gradient of density multiplied by the i-slope
144               zsign = SIGN( 0.5, -zgdrho     * ( zdep(ji+1,jj) - zdep(ji,jj) ) )
145               zsigna= SIGN( 0.5, zunb(ji,jj) * ( zdep(ji+1,jj) - zdep(ji,jj) ) )
146               zalphax(ji,jj)=( 0.5 + zsigna ) * ( 0.5 - zsign ) * umask(ji,jj,1)
147               !
148               !   ... temperature, salinity anomalie and depth
149               zt = 0.5 * ( ztnb(ji,jj+1) + ztnb(ji,jj) )
150               zs = 0.5 * ( zsnb(ji,jj+1) + zsnb(ji,jj) ) - 35.0
151               zh = 0.5 * ( zdep(ji,jj+1) + zdep(ji,jj) )
152               !   ... masked ratio alpha/beta
153               zalbet = fsalbt( zt, zs, zh ) * vmask(ji,jj,1)
154               !   ... local density gradient along j-bathymetric slope
155               zgdrho = zalbet * ( ztnb(ji,jj+1) - ztnb(ji,jj) )   &
156                  &       -      ( zsnb(ji,jj+1) - zsnb(ji,jj) )
157               zgdrho = zgdrho*vmask(ji,jj,1)
158               !   ... sign of local j-gradient of density multiplied by the j-slope
159               zsign = SIGN( 0.5, -zgdrho     * ( zdep(ji,jj+1) - zdep(ji,jj) ) )
160               zsigna= SIGN( 0.5, zvnb(ji,jj) * ( zdep(ji,jj+1) - zdep(ji,jj) ) )
161               zalphay(ji,jj)=( 0.5 + zsigna ) * ( 0.5 - zsign ) * vmask(ji,jj,1)
162            END DO
163         END DO
164         !
165      CASE ( 1 )               ! Linear formulation function of temperature only
166         !
167         DO jj = 1, jpjm1
168            DO ji = 1, fs_jpim1   ! vector opt.
169               ! local 'density/temperature' gradient along i-bathymetric slope
170               zgdrho =  ( ztnb(ji+1,jj) - ztnb(ji,jj) )
171               ! sign of local i-gradient of density multiplied by the i-slope
172               zsign = SIGN( 0.5, - zgdrho    * ( zdep(ji+1,jj) - zdep(ji,jj) ) )
173               zsigna= SIGN( 0.5, zunb(ji,jj) * ( zdep(ji+1,jj) - zdep(ji,jj) ) )
174               zalphax(ji,jj)=( 0.5 + zsigna ) * ( 0.5 - zsign ) * umask(ji,jj,1)
175               !
176               ! local density gradient along j-bathymetric slope
177               zgdrho =  ( ztnb(ji,jj+1) - ztnb(ji,jj) )
178               ! sign of local j-gradient of density multiplied by the j-slope
179               zsign = SIGN( 0.5, -zgdrho     * ( zdep(ji,jj+1) - zdep(ji,jj) ) )
180               zsigna= SIGN( 0.5, zvnb(ji,jj) * ( zdep(ji,jj+1) - zdep(ji,jj) ) )
181               zalphay(ji,jj)=( 0.5 + zsigna ) * ( 0.5 - zsign ) * vmask(ji,jj,1)
182            END DO
183         END DO
184         !
185      CASE ( 2 )               ! Linear formulation function of temperature and salinity
186         !
187         DO jj = 1, jpjm1
188            DO ji = 1, fs_jpim1   ! vector opt.           
189               ! local density gradient along i-bathymetric slope
190               zgdrho = - ( rn_beta *( zsnb(ji+1,jj) - zsnb(ji,jj) )   &
191                  &       - rn_alpha*( ztnb(ji+1,jj) - ztnb(ji,jj) ) )
192               ! sign of local i-gradient of density multiplied by the i-slope
193               zsign = SIGN( 0.5, - zgdrho    * ( zdep(ji+1,jj) - zdep(ji,jj) ) )
194               zsigna= SIGN( 0.5, zunb(ji,jj) * ( zdep(ji+1,jj) - zdep(ji,jj) ) )
195               zalphax(ji,jj) = ( 0.5 + zsigna ) * ( 0.5 - zsign ) * umask(ji,jj,1)
196               !
197               ! local density gradient along j-bathymetric slope
198               zgdrho = - ( rn_beta *( zsnb(ji,jj+1) - zsnb(ji,jj) )   &
199                  &       - rn_alpha*( ztnb(ji,jj+1) - ztnb(ji,jj) ) )   
200               ! sign of local j-gradient of density multiplied by the j-slope
201               zsign = SIGN( 0.5, - zgdrho    * ( zdep(ji,jj+1) - zdep(ji,jj) ) )
202               zsigna= SIGN( 0.5, zvnb(ji,jj) * ( zdep(ji,jj+1) - zdep(ji,jj) ) )
203               zalphay(ji,jj) = ( 0.5 + zsigna ) * ( 0.5 - zsign ) * vmask(ji,jj,1)
204            END DO
205         END DO
206         !
207      END SELECT
208
209      ! lateral boundary conditions on zalphax and zalphay   (unchanged sign)
210       CALL lbc_lnk( zalphax, 'U', 1. )   ;   CALL lbc_lnk( zalphay, 'V', 1. )
211
212
213      ! 3. Velocities that are exchanged between ajacent bottom boxes.
214      !---------------------------------------------------------------
215
216      ! ... is equal to zero but where bbl will work.
217      u_bbl(:,:,:) = 0.e0
218      v_bbl(:,:,:) = 0.e0
219
220      IF( ln_zps ) THEN     ! partial steps correction   
221     
222# if defined key_vectopt_loop
223         DO jj = 1, 1
224            DO ji = 1, jpij-jpi   ! vector opt. (forced unrolling)
225# else   
226         DO jj = 1, jpjm1
227            DO ji = 1, jpim1
228# endif
229               iku  = mbku(ji  ,jj  )
230               ikv  = mbkv(ji  ,jj  ) 
231               iku1 = mbkt(ji+1,jj  )
232               iku2 = mbkt(ji  ,jj  )
233               ikv1 = mbkt(ji  ,jj+1)
234               ikv2 = mbkt(ji  ,jj  )
235               ze3u = MIN( fse3u(ji,jj,iku1), fse3u(ji,jj,iku2) )
236               ze3v = MIN( fse3v(ji,jj,ikv1), fse3v(ji,jj,ikv2) )
237               
238               IF( MAX(iku,ikv) >  1 ) THEN
239                  u_bbl(ji,jj,iku) = zalphax(ji,jj) * un(ji,jj,iku) * ze3u / fse3u(ji,jj,iku)
240                  v_bbl(ji,jj,ikv) = zalphay(ji,jj) * vn(ji,jj,ikv) * ze3v / fse3v(ji,jj,ikv)       
241               ENDIF
242            END DO
243         END DO
244
245         ! lateral boundary conditions on u_bbl and v_bbl   (changed sign)
246         CALL lbc_lnk( u_bbl, 'U', -1. )   ;   CALL lbc_lnk( v_bbl, 'V', -1. )
247       
248      ELSE       ! if not partial step loop over the whole domain no lbc call
249
250#if defined key_vectopt_loop
251         DO jj = 1, 1
252            DO ji = 1, jpij   ! vector opt. (forced unrolling)
253#else
254         DO jj = 1, jpj
255            DO ji = 1, jpi
256#endif   
257               iku = mbku(ji,jj)
258               ikv = mbkv(ji,jj)
259               IF( MAX(iku,ikv) >  1 ) THEN
260                  u_bbl(ji,jj,iku) = zalphax(ji,jj) * un(ji,jj,iku)
261                  v_bbl(ji,jj,ikv) = zalphay(ji,jj) * vn(ji,jj,ikv)       
262               ENDIF
263            END DO
264         END DO
265       
266      ENDIF
267
268
269      ! 5. Along sigma advective trend
270      ! -------------------------------
271      ! ... Second order centered tracer flux at u and v-points
272
273# if defined key_vectopt_loop
274      DO jj = 1, 1
275         DO ji = 1, jpij-jpi   ! vector opt. (forced unrolling)
276# else
277      DO jj = 1, jpjm1
278         DO ji = 1, jpim1
279# endif
280            iku = mbku(ji,jj)
281            ikv = mbkv(ji,jj)
282            zfui = e2u(ji,jj) * fse3u(ji,jj,iku) * u_bbl(ji,jj,iku)
283            zfvj = e1v(ji,jj) * fse3v(ji,jj,ikv) * v_bbl(ji,jj,ikv)
284            ! centered scheme
285!           zwx(ji,jj) = 0.5* zfui * ( ztnb(ji,jj) + ztnb(ji+1,jj) )
286!           zwy(ji,jj) = 0.5* zfvj * ( ztnb(ji,jj) + ztnb(ji,jj+1) )
287!           zww(ji,jj) = 0.5* zfui * ( zsnb(ji,jj) + zsnb(ji+1,jj) )
288!           zwz(ji,jj) = 0.5* zfvj * ( zsnb(ji,jj) + zsnb(ji,jj+1) )
289            ! upstream scheme
290            zwx(ji,jj) = ( ( zfui + ABS( zfui ) ) * ztbb(ji  ,jj  )   &
291               &          +( zfui - ABS( zfui ) ) * ztbb(ji+1,jj  ) ) * 0.5
292            zwy(ji,jj) = ( ( zfvj + ABS( zfvj ) ) * ztbb(ji  ,jj  )   &
293               &          +( zfvj - ABS( zfvj ) ) * ztbb(ji  ,jj+1) ) * 0.5
294            zww(ji,jj) = ( ( zfui + ABS( zfui ) ) * zsbb(ji  ,jj  )   &
295               &          +( zfui - ABS( zfui ) ) * zsbb(ji+1,jj  ) ) * 0.5
296            zwz(ji,jj) = ( ( zfvj + ABS( zfvj ) ) * zsbb(ji  ,jj  )   &
297               &          +( zfvj - ABS( zfvj ) ) * zsbb(ji  ,jj+1) ) * 0.5
298         END DO
299      END DO
300# if defined key_vectopt_loop
301      DO jj = 1, 1
302         DO ji = jpi+2, jpij-jpi-1   ! vector opt. (forced unrolling)
303# else
304      DO jj = 2, jpjm1
305         DO ji = 2, jpim1
306# endif
307            ik = mbkt(ji,jj)
308            zbtr = 1. / ( e1t(ji,jj)*e2t(ji,jj)*fse3t(ji,jj,ik) )
309            ! horizontal advective trends
310            zta = - zbtr * (  zwx(ji,jj) - zwx(ji-1,jj  )   &
311               &            + zwy(ji,jj) - zwy(ji  ,jj-1)  )
312            zsa = - zbtr * (  zww(ji,jj) - zww(ji-1,jj  )   &
313               &            + zwz(ji,jj) - zwz(ji  ,jj-1)  )
314
315            ! add it to the general tracer trends
316            ta(ji,jj,ik) = ta(ji,jj,ik) + zta
317            sa(ji,jj,ik) = sa(ji,jj,ik) + zsa
318         END DO
319      END DO
320
321      IF(ln_ctl)   CALL prt_ctl( tab3d_1=ta, clinfo1=' bbl  - Ta: ', mask1=tmask,   &
322         &                       tab3d_2=sa, clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' )
323
324      ! 6. Vertical advection velocities
325      ! --------------------------------
326      ! ... computes divergence perturbation (velocties to be removed from upper t boxes :
327      DO jk= 1, jpkm1
328         DO jj=1, jpjm1
329            DO ji = 1, fs_jpim1   ! vector opt.
330               zwu(ji,jj) = -e2u(ji,jj) * u_bbl(ji,jj,jk) * fse3u(ji,jj,jk)
331               zwv(ji,jj) = -e1v(ji,jj) * v_bbl(ji,jj,jk) * fse3v(ji,jj,jk)
332            END DO
333         END DO
334
335      ! ... horizontal divergence
336         DO jj = 2, jpjm1
337            DO ji = fs_2, fs_jpim1   ! vector opt.
338               zbt = e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)
339               zhdivn(ji,jj,jk) = (  zwu(ji,jj) - zwu(ji-1,jj  )   &
340                                   + zwv(ji,jj) - zwv(ji  ,jj-1)  ) / zbt
341            END DO
342         END DO
343      END DO
344
345
346      ! ... horizontal bottom divergence
347
348      IF( ln_zps ) THEN
349 
350# if defined key_vectopt_loop
351         DO jj = 1, 1
352            DO ji = 1, jpij-jpi   ! vector opt. (forced unrolling)
353# else
354         DO jj = 1, jpjm1
355            DO ji = 1, jpim1
356# endif
357               iku  = mbku(ji  ,jj  )
358               ikv  = mbkv(ji  ,jj  ) 
359               iku1 = mbkt(ji+1,jj  )
360               iku2 = mbkt(ji  ,jj  )
361               ikv1 = mbkt(ji  ,jj+1)
362               ikv2 = mbkt(ji  ,jj  )
363               ze3u = MIN( fse3u(ji,jj,iku1), fse3u(ji,jj,iku2) )
364               ze3v = MIN( fse3v(ji,jj,ikv1), fse3v(ji,jj,ikv2) )
365
366               zwu(ji,jj) = zalphax(ji,jj) * e2u(ji,jj) * ze3u 
367               zwv(ji,jj) = zalphay(ji,jj) * e1v(ji,jj) * ze3v
368            END DO
369         END DO 
370         !
371      ELSE
372         !
373# if defined key_vectopt_loop
374         DO jj = 1, 1
375            DO ji = 1, jpij-jpi   ! vector opt. (forced unrolling)
376# else
377         DO jj = 1, jpjm1
378            DO ji = 1, jpim1
379# endif
380               iku = mbku(ji,jj)
381               ikv = mbkv(ji,jj)
382               zwu(ji,jj) = zalphax(ji,jj) * e2u(ji,jj) * fse3u(ji,jj,iku)
383               zwv(ji,jj) = zalphay(ji,jj) * e1v(ji,jj) * fse3v(ji,jj,ikv)
384            END DO
385         END DO
386         !
387      ENDIF
388 
389
390# if defined key_vectopt_loop
391      DO jj = 1, 1
392         DO ji = jpi+2, jpij-jpi-1   ! vector opt. (forced unrolling)
393# else
394      DO jj = 2, jpjm1
395         DO ji = 2, jpim1
396# endif
397            ik = mbkt(ji,jj)
398            zbt = e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,ik)
399            zhdivn(ji,jj,ik) =   &
400               &   (  zwu(ji  ,jj  ) * ( zunb(ji  ,jj  ) - un(ji  ,jj  ,ik) )   &
401               &    - zwu(ji-1,jj  ) * ( zunb(ji-1,jj  ) - un(ji-1,jj  ,ik) )   &
402               &    + zwv(ji  ,jj  ) * ( zvnb(ji  ,jj  ) - vn(ji  ,jj  ,ik) )   &
403               &    - zwv(ji  ,jj-1) * ( zvnb(ji  ,jj-1) - vn(ji  ,jj-1,ik) )   &
404               &   ) / zbt
405
406         END DO
407      END DO
408
409      ! 7. compute additional vertical velocity to be used in t boxes
410      ! -------------------------------------------------------------
411      ! ... Computation from the bottom
412      ! Note that w_bbl(:,:,jpk) has been set to 0 in tra_bbl_init
413      DO jk = jpkm1, 1, -1
414         DO jj= 2, jpjm1
415            DO ji = fs_2, fs_jpim1   ! vector opt.
416               w_bbl(ji,jj,jk) = w_bbl(ji,jj,jk+1) - fse3t(ji,jj,jk)*zhdivn(ji,jj,jk)
417            END DO
418         END DO
419      END DO
420      CALL lbc_lnk( w_bbl, 'W', 1. )      ! Boundary condition on w_bbl   (unchanged sign)
421
422      CALL iom_put( "uoce_bbl", u_bbl )   ! bbl i-current     
423      CALL iom_put( "voce_bbl", v_bbl )   ! bbl j-current
424      CALL iom_put( "woce_bbl", w_bbl )   ! bbl vert. current
425      !
426   END SUBROUTINE tra_bbl_adv
Note: See TracBrowser for help on using the repository browser.