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.F90 in trunk/NEMO/OPA_SRC/TRA – NEMO

source: trunk/NEMO/OPA_SRC/TRA/trabbl.F90 @ 258

Last change on this file since 258 was 258, checked in by opalod, 19 years ago

nemo_v1_update_004 : CT : Integration of the control print option for debugging work

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 20.1 KB
Line 
1MODULE trabbl
2   !!==============================================================================
3   !!                       ***  MODULE  trabbl  ***
4   !! Ocean physics :  advective and/or diffusive bottom boundary layer scheme
5   !!==============================================================================
6#if   defined key_trabbl_dif   ||   defined key_trabbl_adv   || defined key_esopa
7   !!----------------------------------------------------------------------
8   !!   'key_trabbl_dif'   or            diffusive bottom boundary layer
9   !!   'key_trabbl_adv'                 advective bottom boundary layer
10   !!----------------------------------------------------------------------
11   !!   tra_bbl_dif  : update the active tracer trends due to the bottom
12   !!                  boundary layer (diffusive only)
13   !!   tra_bbl_adv  : update the active tracer trends due to the bottom
14   !!                  boundary layer (advective and/or diffusive)
15   !!   tra_bbl_init : initialization, namlist read, parameters control
16   !!----------------------------------------------------------------------
17   !! * Modules used
18   USE oce             ! ocean dynamics and active tracers
19   USE dom_oce         ! ocean space and time domain
20   USE trdmod_oce      ! ocean variables trends
21   USE in_out_manager  ! I/O manager
22   USE prtctl          ! Print control
23
24   IMPLICIT NONE
25   PRIVATE
26
27   !! * Routine accessibility
28   PUBLIC tra_bbl_dif    ! routine called by step.F90
29   PUBLIC tra_bbl_adv    ! routine called by step.F90
30
31   !! * Shared module variables
32   LOGICAL, PUBLIC, PARAMETER ::   &  !:
33      lk_trabbl_dif = .TRUE.          !: diffusive bottom boundary layer flag
34   REAL(wp), PUBLIC ::            &  !!: * bbl namelist *
35      atrbbl = 1.e+3                  !: lateral coeff. for bottom boundary
36      !                               !  layer scheme (m2/s)
37# if defined key_trabbl_adv
38   LOGICAL, PUBLIC, PARAMETER ::    &  !:
39      lk_trabbl_adv = .TRUE.   !: advective bottom boundary layer flag
40   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   &  !:
41       u_bbl, v_bbl,  &  !: velocity involved in exhanges in the advective BBL
42       w_bbl             !: vertical increment of velocity due to advective BBL
43       !                 !  only affect tracer vertical advection
44# else
45   LOGICAL, PUBLIC, PARAMETER ::    &  !:
46      lk_trabbl_adv = .FALSE.  !: advective bottom boundary layer flag
47# endif
48
49   !! * Module variables
50   INTEGER, DIMENSION(jpi,jpj) ::   &  !:
51      mbkt,           &   ! vertical index of the bottom ocean T-level
52      mbku, mbkv          ! vertical index of the bottom ocean U/V-level
53
54   !! * Substitutions
55#  include "domzgr_substitute.h90"
56#  include "vectopt_loop_substitute.h90"
57   !!----------------------------------------------------------------------
58   !!   OPA 9.0 , LOCEAN-IPSL (2005)
59   !! $Header$
60   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt
61   !!----------------------------------------------------------------------
62
63CONTAINS
64
65   SUBROUTINE tra_bbl_dif( kt )
66      !!----------------------------------------------------------------------
67      !!                   ***  ROUTINE tra_bbl_dif  ***
68      !!
69      !! ** Purpose :   Compute the before tracer (t & s) trend associated
70      !!      with the bottom boundary layer and add it to the general trend
71      !!      of tracer equations. The bottom boundary layer is supposed to be
72      !!      a purely diffusive bottom boundary layer.
73      !!
74      !! ** Method  :   When the product grad( rho) * grad(h) < 0 (where grad
75      !!      is an along bottom slope gradient) an additional lateral diffu-
76      !!      sive trend along the bottom slope is added to the general tracer
77      !!      trend, otherwise nothing is done.
78      !!      Second order operator (laplacian type) with variable coefficient
79      !!      computed as follow for temperature (idem on s):
80      !!         difft = 1/(e1t*e2t*e3t) { di-1[ ahbt e2u*e3u/e1u di[ztb] ]
81      !!                                 + dj-1[ ahbt e1v*e3v/e2v dj[ztb] ] }
82      !!      where ztb is a 2D array: the bottom ocean temperature and ahtb
83      !!      is a time and space varying diffusive coefficient defined by:
84      !!         ahbt = zahbp    if grad(rho).grad(h) < 0
85      !!              = 0.       otherwise.
86      !!      Note that grad(.) is the along bottom slope gradient. grad(rho)
87      !!      is evaluated using the local density (i.e. referenced at the
88      !!      local depth). Typical value of ahbt is 2000 m2/s (equivalent to
89      !!      a downslope velocity of 20 cm/s if the condition for slope
90      !!      convection is satified)
91      !!      Add this before trend to the general trend (ta,sa) of the
92      !!      botton ocean tracer point:
93      !!         ta = ta + difft
94      !!
95      !! ** Action  : - update (ta,sa) at the bottom level with the bottom
96      !!                boundary layer trend
97      !!              - save the trends in tldfbbl/sldfbbl ('key_trdtra')
98      !!
99      !! References :
100      !!     Beckmann, A., and R. Doscher, 1997, J. Phys.Oceanogr., 581-591.
101      !!
102      !! History :
103      !!   8.0  !  96-06  (L. Mortier)  Original code
104      !!   8.0  !  97-11  (G. Madec)  Optimization
105      !!   8.5  !  02-08  (G. Madec)  free form + modules
106      !!   9.0  !  04-08  (C. Talandier) New trends organization
107      !!----------------------------------------------------------------------
108      !! * Modules used     
109      USE oce, ONLY :    ztdta => ua,     & ! use ua as 3D workspace   
110                         ztdsa => va        ! use va as 3D workspace   
111
112      !! * Arguments
113      INTEGER, INTENT( in ) ::   kt         ! ocean time-step
114
115      !! * Local declarations
116      INTEGER ::   ji, jj                   ! dummy loop indices
117      INTEGER ::   ik
118      INTEGER ::   ii0, ii1, ij0, ij1       ! temporary integers
119#  if defined key_partial_steps
120      INTEGER  ::   iku1, iku2, ikv1,ikv2   ! temporary intergers
121      REAL(wp) ::   ze3u, ze3v              ! temporary scalars
122#  else
123      INTEGER ::   iku, ikv
124#  endif
125      REAL(wp) ::   &
126         zsign, zt, zs, zh, zalbet,      &  ! temporary scalars
127         zgdrho, zbtr, zta, zsa
128      REAL(wp), DIMENSION(jpi,jpj) ::    &
129        zki, zkj, zkw, zkx, zky, zkz,    &  ! temporary workspace arrays
130        ztnb, zsnb, zdep,                &
131        ztbb, zsbb, zahu, zahv
132      REAL(wp) ::   &
133         fsalbt, pft, pfs, pfh              ! statement function
134      !!----------------------------------------------------------------------
135      ! ratio alpha/beta
136      ! ================
137      !  fsalbt: ratio of thermal over saline expension coefficients
138      !       pft :  potential temperature in degrees celcius
139      !       pfs :  salinity anomaly (s-35) in psu
140      !       pfh :  depth in meters
141
142      fsalbt( pft, pfs, pfh ) =                                              &
143         ( ( ( -0.255019e-07 * pft + 0.298357e-05 ) * pft                    &
144                                   - 0.203814e-03 ) * pft                    &
145                                   + 0.170907e-01 ) * pft                    &
146                                   + 0.665157e-01                            &
147         +(-0.678662e-05 * pfs - 0.846960e-04 * pft + 0.378110e-02 ) * pfs   &
148         +  ( ( - 0.302285e-13 * pfh                                         &
149                - 0.251520e-11 * pfs                                         &
150                + 0.512857e-12 * pft * pft          ) * pfh                  &
151                                     - 0.164759e-06   * pfs                  &
152             +(   0.791325e-08 * pft - 0.933746e-06 ) * pft                  &
153                                     + 0.380374e-04 ) * pfh   
154      !!----------------------------------------------------------------------
155
156      IF( kt == nit000 )   CALL tra_bbl_init
157
158      ! Save ta and sa trends
159      IF( l_trdtra )   THEN
160         ztdta(:,:,:) = ta(:,:,:) 
161         ztdsa(:,:,:) = sa(:,:,:) 
162      ENDIF
163
164      ! 0. 2D fields of bottom temperature and salinity, and bottom slope
165      ! -----------------------------------------------------------------
166      ! mbathy= number of w-level, minimum value=1 (cf dommsk.F)
167
168#  if defined key_vectopt_loop   &&   ! defined key_autotasking
169      jj = 1
170      DO ji = 1, jpij   ! vector opt. (forced unrolling)
171#  else
172      DO jj = 1, jpj
173         DO ji = 1, jpi
174#  endif
175            ik = mbkt(ji,jj)                              ! index of the bottom ocean T-level
176            ztnb(ji,jj) = tn(ji,jj,ik) * tmask(ji,jj,1)   ! masked now T and S at ocean bottom
177            zsnb(ji,jj) = sn(ji,jj,ik) * tmask(ji,jj,1)
178            ztbb(ji,jj) = tb(ji,jj,ik) * tmask(ji,jj,1)   ! masked before T and S at ocean bottom
179            zsbb(ji,jj) = sb(ji,jj,ik) * tmask(ji,jj,1)
180            zdep(ji,jj) = fsdept(ji,jj,ik)                ! depth of the ocean bottom T-level
181#  if ! defined key_vectopt_loop   ||   defined key_autotasking
182         END DO
183#  endif
184      END DO
185
186#  if defined key_partial_steps
187      ! partial steps correction
188#   if defined key_vectopt_loop   &&   ! defined key_autotasking
189      jj = 1
190      DO ji = 1, jpij-jpi   ! vector opt. (forced unrolling)
191#   else
192      DO jj = 1, jpjm1
193         DO ji = 1, jpim1
194#   endif
195            iku1 = MAX( mbathy(ji+1,jj  )-1, 1 )
196            iku2 = MAX( mbathy(ji  ,jj  )-1, 1 )
197            ikv1 = MAX( mbathy(ji  ,jj+1)-1, 1 )
198            ikv2 = MAX( mbathy(ji  ,jj  )-1, 1 )
199            ze3u = MIN( fse3u(ji,jj,iku1), fse3u(ji,jj,iku2) ) 
200            ze3v = MIN( fse3v(ji,jj,ikv1), fse3v(ji,jj,ikv2) ) 
201            zahu(ji,jj) = atrbbl * e2u(ji,jj) * ze3u / e1u(ji,jj) * umask(ji,jj,1)
202            zahv(ji,jj) = atrbbl * e1v(ji,jj) * ze3v / e2v(ji,jj) * vmask(ji,jj,1)
203#   if ! defined key_vectopt_loop   ||   defined key_autotasking
204         END DO
205#   endif
206      END DO
207#  else
208#   if defined key_vectopt_loop   &&   ! defined key_autotasking
209      jj = 1
210      DO ji = 1, jpij-jpi   ! vector opt. (forced unrolling)
211#   else
212      DO jj = 1, jpjm1
213         DO ji = 1, jpim1
214#   endif
215            iku = mbku(ji,jj)
216            ikv = mbkv(ji,jj)
217            zahu(ji,jj) = atrbbl * e2u(ji,jj) * fse3u(ji,jj,iku) / e1u(ji,jj) * umask(ji,jj,1)
218            zahv(ji,jj) = atrbbl * e1v(ji,jj) * fse3v(ji,jj,ikv) / e2v(ji,jj) * vmask(ji,jj,1)
219#   if ! defined key_vectopt_loop   ||   defined key_autotasking
220         END DO
221#   endif
222      END DO
223#  endif
224
225      ! 1. Criteria of additional bottom diffusivity: grad(rho).grad(h)<0
226      ! --------------------------------------------
227      ! Sign of the local density gradient along the i- and j-slopes
228      ! multiplied by the slope of the ocean bottom
229
230#  if defined key_vectopt_loop   &&   ! defined key_autotasking
231      jj = 1
232      DO ji = 1, jpij-jpi   ! vector opt. (forced unrolling)
233#  else
234      DO jj = 1, jpjm1
235         DO ji = 1, jpim1
236#  endif
237            ! temperature, salinity anomalie and depth
238            zt = 0.5 * ( ztnb(ji,jj) + ztnb(ji+1,jj) )
239            zs = 0.5 * ( zsnb(ji,jj) + zsnb(ji+1,jj) ) - 35.0
240            zh = 0.5 * ( zdep(ji,jj) + zdep(ji+1,jj) )
241            ! masked ratio alpha/beta
242            zalbet = fsalbt( zt, zs, zh )*umask(ji,jj,1)
243            ! local density gradient along i-bathymetric slope
244            zgdrho = zalbet * ( ztnb(ji+1,jj) - ztnb(ji,jj) )   &
245                   -          ( zsnb(ji+1,jj) - zsnb(ji,jj) )
246            ! sign of local i-gradient of density multiplied by the i-slope
247            zsign = SIGN( 0.5, - zgdrho * ( zdep(ji+1,jj) - zdep(ji,jj) ) )
248            zki(ji,jj) = ( 0.5 - zsign ) * zahu(ji,jj)
249#  if ! defined key_vectopt_loop   ||   defined key_autotasking
250         END DO
251#  endif
252      END DO
253
254#  if defined key_vectopt_loop   &&   ! defined key_autotasking
255      jj = 1
256      DO ji = 1, jpij-jpi   ! vector opt. (forced unrolling)
257#  else
258      DO jj = 1, jpjm1
259         DO ji = 1, jpim1
260#  endif
261            ! temperature, salinity anomalie and depth
262            zt = 0.5 * ( ztnb(ji,jj+1) + ztnb(ji,jj) )
263            zs = 0.5 * ( zsnb(ji,jj+1) + zsnb(ji,jj) ) - 35.0
264            zh = 0.5 * ( zdep(ji,jj+1) + zdep(ji,jj) )
265            ! masked ratio alpha/beta
266            zalbet = fsalbt( zt, zs, zh )*vmask(ji,jj,1)
267            ! local density gradient along j-bathymetric slope
268            zgdrho = zalbet * ( ztnb(ji,jj+1) - ztnb(ji,jj) )   &
269                   -          ( zsnb(ji,jj+1) - zsnb(ji,jj) )
270            ! sign of local j-gradient of density multiplied by the j-slope
271            zsign = sign( 0.5, -zgdrho * ( zdep(ji,jj+1) - zdep(ji,jj) ) )
272            zkj(ji,jj) = ( 0.5 - zsign ) * zahv(ji,jj)
273#  if ! defined key_vectopt_loop   ||   defined key_autotasking
274         END DO
275#  endif
276      END DO
277
278
279      ! 2. Additional second order diffusive trends
280      ! -------------------------------------------
281
282      ! first derivative (gradient)
283#  if defined key_vectopt_loop   &&   ! defined key_autotasking
284      jj = 1
285      DO ji = 1, jpij-jpi   ! vector opt. (forced unrolling)
286#  else
287      DO jj = 1, jpjm1
288         DO ji = 1, jpim1
289#  endif
290            zkx(ji,jj) = zki(ji,jj) * ( ztbb(ji+1,jj) - ztbb(ji,jj) )
291            zkz(ji,jj) = zki(ji,jj) * ( zsbb(ji+1,jj) - zsbb(ji,jj) )
292
293            zky(ji,jj) = zkj(ji,jj) * ( ztbb(ji,jj+1) - ztbb(ji,jj) )
294            zkw(ji,jj) = zkj(ji,jj) * ( zsbb(ji,jj+1) - zsbb(ji,jj) )
295#  if ! defined key_vectopt_loop   ||   defined key_autotasking
296         END DO
297#  endif
298      END DO
299
300      IF( cp_cfg == "orca" ) THEN
301
302         SELECT CASE ( jp_cfg )
303         !                                           ! =======================
304         CASE ( 2 )                                  !  ORCA_R2 configuration
305            !                                        ! =======================
306            ! Gibraltar enhancement of BBL
307            ij0 = 102   ;   ij1 = 102
308            ii0 = 139   ;   ii1 = 140 
309            zkx( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 4.e0 * zkx( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) )
310            zky( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 4.e0 * zky( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) )
311
312            ! Red Sea enhancement of BBL
313            ij0 =  88   ;   ij1 =  88
314            ii0 = 161   ;   ii1 = 162
315            zkx( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 10.e0 * zkx( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) )
316            zky( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 10.e0 * zky( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) )
317
318            !                                        ! =======================
319         CASE ( 4 )                                  !  ORCA_R4 configuration
320            !                                        ! =======================
321            ! Gibraltar enhancement of BBL
322            ij0 =  52   ;   ij1 =  52
323            ii0 =  70   ;   ii1 =  71 
324            zkx( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 4.e0 * zkx( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) )
325            zky( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 4.e0 * zky( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) )
326
327         END SELECT
328
329      ENDIF
330
331
332      ! second derivative (divergence) and add to the general tracer trend
333#  if defined key_vectopt_loop   &&   ! defined key_autotasking
334      jj = 1
335      DO ji = jpi+2, jpij-jpi-1   ! vector opt. (forced unrolling)
336#  else
337      DO jj = 2, jpjm1
338         DO ji = 2, jpim1
339#  endif
340            ik = max( mbathy(ji,jj)-1, 1 )
341            zbtr = 1. / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,ik) )
342            zta = (  zkx(ji,jj) - zkx(ji-1,jj  )    &
343                   + zky(ji,jj) - zky(ji  ,jj-1)  ) * zbtr
344            zsa = (  zkz(ji,jj) - zkz(ji-1,jj  )    &
345                   + zkw(ji,jj) - zkw(ji  ,jj-1)  ) * zbtr
346            ta(ji,jj,ik) = ta(ji,jj,ik) + zta
347            sa(ji,jj,ik) = sa(ji,jj,ik) + zsa
348#  if ! defined key_vectopt_loop   ||   defined key_autotasking
349         END DO
350#  endif
351      END DO
352
353      ! save the trends for diagnostic
354      ! BBL lateral diffusion tracers trends
355      IF( l_trdtra )   THEN
356#  if defined key_vectopt_loop   &&   ! defined key_autotasking
357         jj = 1
358         DO ji = jpi+2, jpij-jpi-1   ! vector opt. (forced unrolling)
359#  else
360         DO jj = 2, jpjm1
361            DO ji = 2, jpim1
362#  endif
363            ik = max( mbathy(ji,jj)-1, 1 )
364            tldfbbl(ji,jj) = ta(ji,jj,ik) - ztdta(ji,jj,ik)
365            sldfbbl(ji,jj) = sa(ji,jj,ik) - ztdsa(ji,jj,ik)
366#  if ! defined key_vectopt_loop   ||   defined key_autotasking
367            END DO
368#  endif
369         END DO
370
371      ENDIF
372
373      IF(ln_ctl) THEN
374         CALL prt_ctl(tab3d_1=ta, clinfo1=' bbl  - Ta: ', mask1=tmask, &
375            &         tab3d_2=sa, clinfo2=' Sa: ', mask2=tmask, clinfo3='tra')
376      ENDIF
377
378   END SUBROUTINE tra_bbl_dif
379
380# if defined key_trabbl_adv
381   !!----------------------------------------------------------------------
382   !!   'key_trabbl_adv'                    advective bottom boundary layer
383   !!----------------------------------------------------------------------
384#  include "trabbl_adv.h90"
385# else
386   !!----------------------------------------------------------------------
387   !!   Default option :                 NO advective bottom boundary layer
388   !!----------------------------------------------------------------------
389   SUBROUTINE tra_bbl_adv (kt )              ! Empty routine
390      INTEGER, INTENT(in) :: kt
391      WRITE(*,*) 'tra_bbl_adv: You should not have seen this print! error?', kt
392   END SUBROUTINE tra_bbl_adv
393# endif
394
395   SUBROUTINE tra_bbl_init
396      !!----------------------------------------------------------------------
397      !!                  ***  ROUTINE tra_bbl_init  ***
398      !!
399      !! ** Purpose :   Initialization for the bottom boundary layer scheme.
400      !!
401      !! ** Method  :   Read the nambbl namelist and check the parameters
402      !!      called by tra_bbl at the first timestep (nit000)
403      !!
404      !! History :
405      !!    8.5  !  02-08  (G. Madec)  Original code
406      !!----------------------------------------------------------------------
407      !! * Local declarations
408      INTEGER ::   ji, jj      ! dummy loop indices
409      NAMELIST/nambbl/ atrbbl
410      !!----------------------------------------------------------------------
411
412      ! Read Namelist nambbl : bottom boundary layer scheme
413      ! --------------------
414      REWIND ( numnam )
415      READ   ( numnam, nambbl )
416
417
418      ! Parameter control and print
419      ! ---------------------------
420      IF(lwp) THEN
421         WRITE(numout,*)
422         WRITE(numout,*) 'tra_bbl_init : * Diffusive Bottom Boundary Layer'
423         WRITE(numout,*) '~~~~~~~~~~~~'
424         IF( lk_trabbl_adv ) THEN
425            WRITE(numout,*) '               * Advective Bottom Boundary Layer'
426         ENDIF
427         WRITE(numout,*) '          Namelist nambbl : set bbl parameters'
428         WRITE(numout,*)
429         WRITE(numout,*) '          bottom boundary layer coef.    atrbbl = ', atrbbl
430         WRITE(numout,*)
431      ENDIF
432 
433      DO jj = 1, jpj
434         DO ji = 1, jpi
435            mbkt(ji,jj) = MAX( mbathy(ji,jj) - 1, 1 )   ! vertical index of the bottom ocean T-level
436         END DO
437      END DO
438      DO jj = 1, jpjm1
439         DO ji = 1, jpim1
440            mbku(ji,jj) = MAX( MIN( mbathy(ji+1,jj  ), mbathy(ji,jj) ) - 1, 1 )
441            mbkv(ji,jj) = MAX( MIN( mbathy(ji  ,jj+1), mbathy(ji,jj) ) - 1, 1 )
442         END DO
443      END DO
444!!bug ???
445!!bug Caution : define the vakue of mbku & mbkv everywhere!!! but lbc mpp lnk : pb when closed (0)
446
447# if defined key_trabbl_adv
448      ! initialisation of w_bbl to zero
449      w_bbl(:,:,:) = 0.e0   
450# endif
451
452   END SUBROUTINE tra_bbl_init
453
454#else
455   !!----------------------------------------------------------------------
456   !!   Dummy module :                      No bottom boundary layer scheme
457   !!----------------------------------------------------------------------
458   LOGICAL, PUBLIC, PARAMETER ::   lk_trabbl_dif = .FALSE.   !: diff bbl flag
459   LOGICAL, PUBLIC, PARAMETER ::   lk_trabbl_adv = .FALSE.   !: adv  bbl flag
460CONTAINS
461   SUBROUTINE tra_bbl_dif (kt )              ! Empty routine
462      INTEGER, INTENT(in) :: kt
463      WRITE(*,*) 'tra_bbl_dif: You should not have seen this print! error?', kt
464   END SUBROUTINE tra_bbl_dif
465   SUBROUTINE tra_bbl_adv (kt )              ! Empty routine
466      INTEGER, INTENT(in) :: kt
467      WRITE(*,*) 'tra_bbl_adv: You should not have seen this print! error?', kt
468   END SUBROUTINE tra_bbl_adv
469#endif
470
471   !!======================================================================
472END MODULE trabbl
Note: See TracBrowser for help on using the repository browser.