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.
trcadv_cen2.F90 in trunk/NEMO/TOP_SRC/TRP – NEMO

source: trunk/NEMO/TOP_SRC/TRP/trcadv_cen2.F90 @ 1282

Last change on this file since 1282 was 1282, checked in by cetlod, 15 years ago

suppression of obsolete CPP keys, see ticket:310

  • Property svn:executable set to *
  • Property svn:keywords set to Id
File size: 23.2 KB
Line 
1MODULE trcadv_cen2
2   !!======================================================================
3   !!                       ***  MODULE  trcadv_cen2  ***
4   !! Ocean passive tracers:  horizontal & vertical advective tracer trend
5   !!======================================================================
6#if defined key_top
7   !!----------------------------------------------------------------------
8   !!   'key_top'                                                TOP models
9   !!----------------------------------------------------------------------
10   !!   trc_adv_cen2 : update the tracer trend with the horizontal
11   !!                  and vertical advection trends using a 2nd order
12   !!                  centered finite difference scheme
13   !!----------------------------------------------------------------------
14   USE oce_trc             ! ocean dynamics and active tracers variables
15   USE trp_trc             ! ocean passive tracers variables
16   USE trcbbl              ! advective passive tracers in the BBL
17   USE prtctl_trc
18   USE trdmld_trc
19   USE trdmld_trc_oce          ! ocean variables trends
20
21   IMPLICIT NONE
22   PRIVATE
23
24   PUBLIC trc_adv_cen2    ! routine called by trcstp.F90
25
26   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   upsmsk    !: mixed upstream/centered scheme near some straits
27   !                                                   !  and in closed seas (orca 2 and 4 configurations)
28
29   !! * Substitutions
30#  include "top_substitute.h90"
31   !!----------------------------------------------------------------------
32   !!   TOP 1.0 , LOCEAN-IPSL (2005)
33   !! $Id$
34   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt
35   !!----------------------------------------------------------------------
36
37CONTAINS
38
39   !!----------------------------------------------------------------------
40   !!   Default option :             2nd order centered scheme (k-j-i loop)
41   !!----------------------------------------------------------------------
42
43   SUBROUTINE trc_adv_cen2( kt )
44      !!----------------------------------------------------------------------
45      !!                  ***  ROUTINE trc_adv_cen2  ***
46      !!                 
47      !! ** Purpose :   Compute the now trend due to the advection of tracers
48      !!      and add it to the general trend of passive tracer equations.
49      !!
50      !! ** Method  :   The advection is evaluated by a second order centered
51      !!      scheme using now fields (leap-frog scheme). In specific areas
52      !!      (vicinity of major river mouths, some straits, or where tn is
53      !!      is approaching the freezing point) it is mixed with an upstream
54      !!      scheme for stability reasons.
55      !!        Part 0 : compute the upstream / centered flag
56      !!                 (3D array, zind, defined at T-point (0<zind<1))
57      !!        Part I : horizontal advection
58      !!      * centered flux:
59      !!         * s-coordinate (ln_sco=T) or
60      !!         * z-coordinate with partial steps (ln_zps=T),
61      !!        the vertical scale factors e3. are inside the derivatives:
62      !!               zcenu = e2u*e3u  un  mi(tn)
63      !!               zcenv = e1v*e3v  vn  mj(tn)
64      !!         * z-coordinate (default key), e3t=e3u=e3v:
65      !!               zcenu = e2u  un  mi(tn)
66      !!               zcenv = e1v  vn  mj(tn)
67      !!      * horizontal advective trend (divergence of the fluxes)
68      !!         * s-coordinate (ln_sco=T) or
69      !!         * z-coordinate with partial steps (ln_zps=T)
70      !!               ztra = 1/(e1t*e2t*e3t) { di-1[zwx] + dj-1[zwy] }
71      !!         * z-coordinate (default key), e3t=e3u=e3v:
72      !!               ztra = 1/(e1t*e2t) { di-1[zwx] + dj-1[zwy] }
73      !!      * Add this trend now to the general trend of tracer tra:
74      !!              tra = tra + ztra
75      !!      * trend diagnostic ('key_trdmld_trc'): the trend is saved
76      !!      for diagnostics. The trends saved is expressed as
77      !!      Uh.gradh(T)
78      !!
79      !!         Part II : vertical advection
80      !!      For any tracer  the advective trend is computed as follows :
81      !!            ztra = 1/e3t dk+1[ zwz ]
82      !!      where the vertical advective flux, zwz, is given by :
83      !!            zwz = zcofk * zupst + (1-zcofk) * zcent
84      !!      with
85      !!        zupsv = upstream flux = wn * (trb(k) or trb(k-1) ) [wn>0 or <0]
86      !!        zcenu = centered flux = wn * mk(trn)
87      !!         The surface boundary condition is :
88      !!      rigid-lid (default option) : zero advective flux
89      !!      free-surf ("key_fresurf_cstvol") : wn(:,:,1) * trn(:,:,1)
90      !!         Add this trend now to the general trend of tracer tra :
91      !!            tra = tra + ztra
92      !!         Trend diagnostic ('key_trdmld_trc'): the trend is saved for
93      !!      diagnostics. The trends saved is expressed as :
94      !!             save trend =  w.gradz(T) = ztra - trn divn.
95      !!
96      !! ** Action : - update tra with the now advective tracer trends
97      !!             - save the trends in trtrd ('key_trdmld_trc')
98      !!
99      !! History :
100      !!   8.2  !  01-08  (M-A Filiberti, and M.Levy)  trahad+trazad = traadv
101      !!   8.5  !  02-06  (G. Madec, C. Ethe)  F90: Free form and module
102      !!----------------------------------------------------------------------
103      !! * Modules used
104      USE oce_trc            , zwx => ua,  &  ! use ua as workspace
105         &                     zwy => va      ! use va as workspace
106#if defined key_trcbbl_adv
107      REAL(wp), DIMENSION(jpi,jpj,jpk) ::  &  ! temporary arrays
108         &         zun, zvn, zwn
109#else
110      USE oce_trc            , zun => un,  &  ! When no bbl, zun == un
111         &                     zvn => vn,  &  ! When no bbl, zvn == vn
112         &                     zwn => wn      ! When no bbl, zwn == wn
113#endif
114
115 
116      !! * Arguments
117      INTEGER, INTENT( in ) ::   kt           ! ocean time-step index
118 
119      !! * Local save
120      REAL(wp), DIMENSION(jpi,jpj), SAVE ::   &
121         zbtr2
122 
123      !! * Local declarations
124      INTEGER  ::   ji, jj, jk, jn             ! dummy loop indices
125      REAL(wp) ::                           &
126         zbtr, ztra, zfui, zfvj,            &  ! temporary scalars
127         zhw, ze3tr, zcofi, zcofj,          &  !    "         "
128         zupsut, zupsvt,                    &  !    "         "
129         zfp_ui, zfp_vj, zfm_ui, zfm_vj,    &  !    "         "
130         zcofk, zupst, zcent,               &  !    "         "
131         zfp_w, zfm_w,                      &  !    "         "
132         zcenut, zcenvt                        !
133
134      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   &
135         zind                              ! temporary workspace arrays
136
137      REAL(wp) ::                           &
138         ztai, ztaj,                        &  ! temporary scalars
139         zfui1, zfvj1                          !    "         "
140
141      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztrtrd
142#if defined key_lim3 || defined key_lim2
143      REAL(wp) ::                           &
144         ztfreez                               ! freezing point
145#endif
146      CHARACTER (len=22) :: charout
147      !!----------------------------------------------------------------------
148
149      IF( kt == nittrc000 ) THEN
150         IF(lwp) WRITE(numout,*)
151         IF(lwp) WRITE(numout,*) 'trc_adv_cen2 : 2nd order centered advection scheme'
152         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~   Vector optimization case'
153         IF(lwp) WRITE(numout,*)
154 
155         upsmsk(:,:) = 0.e0                              ! not upstream by default
156         IF( cp_cfg == "orca" )   CALL ups_orca_set      ! set mixed Upstream/centered scheme near some straits
157         !                                               ! and in closed seas (orca2 and orca4 only)
158         zbtr2(:,:) = 1. / ( e1t(:,:) * e2t(:,:) )
159      ENDIF
160
161      IF( l_trdtrc ) ALLOCATE( ztrtrd(jpi,jpj,jpk) )
162
163#if defined key_trcbbl_adv
164
165      ! Advective bottom boundary layer
166      ! -------------------------------
167      zun(:,:,:) = un(:,:,:) - u_trc_bbl(:,:,:)
168      zvn(:,:,:) = vn(:,:,:) - v_trc_bbl(:,:,:)
169      zwn(:,:,:) = wn(:,:,:) + w_trc_bbl(:,:,:)
170#endif
171
172      ! Upstream / centered scheme indicator
173      ! ------------------------------------
174      DO jk = 1, jpk
175         DO jj = 1, jpj
176            DO ji = 1, jpi
177#if defined key_lim3 || defined key_lim2
178               ztfreez = ( - 0.0575 + 1.710523e-3 * SQRT( sn(ji,jj,1) )   &
179                 &                  - 2.154996e-4 *       sn(ji,jj,1)   ) * sn(ji,jj,1)
180
181               zind(ji,jj,jk) = MAX (   &
182                  rnfmsk(ji,jj) * rnfmsk_z(jk),      &  ! near runoff mouths (& closed sea outflows)
183                  upsmsk(ji,jj)                      &  ! some of some straits
184                  !                                     ! below ice covered area (if tn < "freezing"+0.1 )
185                  , MAX(  0., SIGN( 1., ztfreez + 0.1 - tn(ji,jj,jk) )  ) * tmask(ji,jj,jk)   &
186                  &                  )
187
188#else
189               zind(ji,jj,jk) = MAX (   &
190                  rnfmsk(ji,jj) * rnfmsk_z(jk),      &  ! near runoff mouths (& closed sea outflows)
191                  upsmsk(ji,jj)                      &  ! some of some straits
192                  &                  )
193#endif
194            END DO
195         END DO
196      END DO
197
198
199
200      DO jn = 1, jptra
201         ! I. Horizontal advective fluxes
202         ! ------------------------------
203         
204         ! Second order centered tracer flux at u and v-points
205         
206         !                                                ! ===============
207         DO jk = 1, jpkm1                                 ! Horizontal slab
208            !                                             ! ===============
209            DO jj = 1, jpjm1
210               DO ji = 1, fs_jpim1   ! vector opt.
211               ! upstream indicator
212                  zcofi = MAX( zind(ji+1,jj,jk), zind(ji,jj,jk) )
213                  zcofj = MAX( zind(ji,jj+1,jk), zind(ji,jj,jk) )
214                  ! volume fluxes * 1/2
215#if ! defined key_zco
216                  zfui = 0.5 * e2u(ji,jj) * fse3u(ji,jj,jk) * zun(ji,jj,jk)
217                  zfvj = 0.5 * e1v(ji,jj) * fse3v(ji,jj,jk) * zvn(ji,jj,jk)
218#else
219                  zfui = 0.5 * e2u(ji,jj) * zun(ji,jj,jk)
220                  zfvj = 0.5 * e1v(ji,jj) * zvn(ji,jj,jk)
221#endif
222               ! upstream scheme
223                  zfp_ui = zfui + ABS( zfui )
224                  zfp_vj = zfvj + ABS( zfvj )
225                  zfm_ui = zfui - ABS( zfui )
226                  zfm_vj = zfvj - ABS( zfvj )
227                  zupsut = zfp_ui * trb(ji,jj,jk,jn) + zfm_ui * trb(ji+1,jj  ,jk,jn)
228                  zupsvt = zfp_vj * trb(ji,jj,jk,jn) + zfm_vj * trb(ji  ,jj+1,jk,jn)
229                  ! centered scheme
230                  zcenut = zfui * ( trn(ji,jj,jk,jn) + trn(ji+1,jj  ,jk,jn) )
231                  zcenvt = zfvj * ( trn(ji,jj,jk,jn) + trn(ji  ,jj+1,jk,jn) )
232                  ! mixed centered / upstream scheme
233                  zwx(ji,jj,jk) = zcofi * zupsut + (1.-zcofi) * zcenut
234                  zwy(ji,jj,jk) = zcofj * zupsvt + (1.-zcofj) * zcenvt               
235               END DO
236            END DO
237
238
239            ! 2. Tracer flux divergence at t-point added to the general trend
240            ! -------------------------
241
242            DO jj = 2, jpjm1
243               DO ji = fs_2, fs_jpim1   ! vector opt.
244#if ! defined key_zco
245                  zbtr = zbtr2(ji,jj) / fse3t(ji,jj,jk)
246#else
247                  zbtr = zbtr2(ji,jj) 
248#endif
249                  ! horizontal advective trends
250                  ztra = - zbtr * (  zwx(ji,jj,jk) - zwx(ji-1,jj  ,jk)   &
251                     &             + zwy(ji,jj,jk) - zwy(ji  ,jj-1,jk)  )
252
253                  ! add it to the general tracer trends
254                  tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra
255
256#if defined key_trc_diatrd
257                  ! recompute the trends in i- and j-direction as Uh gradh(T)
258# if ! defined key_zco
259                  zfui = 0.5 * e2u(ji  ,jj) * fse3u(ji,  jj,jk) * zun(ji,  jj,jk)
260                  zfui1= 0.5 * e2u(ji-1,jj) * fse3u(ji-1,jj,jk) * zun(ji-1,jj,jk)
261                  zfvj = 0.5 * e1v(ji,jj  ) * fse3v(ji,jj  ,jk) * zvn(ji,jj  ,jk)
262                  zfvj1= 0.5 * e1v(ji,jj-1) * fse3v(ji,jj-1,jk) * zvn(ji,jj-1,jk)
263# else
264                  zfui = 0.5 * e2u(ji  ,jj) * zun(ji,  jj,jk)
265                  zfui1= 0.5 * e2u(ji-1,jj) * zun(ji-1,jj,jk)
266                  zfvj = 0.5 * e1v(ji,jj  ) * zvn(ji,jj  ,jk)
267                  zfvj1= 0.5 * e1v(ji,jj-1) * zvn(ji,jj-1,jk)
268# endif
269                  ztai = - zbtr * ( zfui  * ( trn(ji+1,jj  ,jk,jn) - trn(ji,  jj,jk,jn) )   &
270                     &                + zfui1 * ( trn(ji,  jj,  jk,jn) - trn(ji-1,jj,jk,jn) ) )
271                  ztaj = - zbtr * ( zfvj  * ( trn(ji  ,jj+1,jk,jn) - trn(ji,jj  ,jk,jn) )    &
272                     &                + zfvj1 * ( trn(ji  ,jj  ,jk,jn) - trn(ji,jj-1,jk,jn) ) )
273                  ! save i- and j- advective trends computed as Uh gradh(T)
274                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),1) = ztai
275                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),2) = ztaj
276#endif
277
278               END DO
279            END DO
280            !                                             ! ===============
281         END DO                                           !   End of slab
282         !                                                ! ===============
283
284         ! 3. Save the horizontal advective trends for diagnostics
285         ! -------------------------------------------------------
286         TRDTRC_XY : IF( l_trdtrc )THEN
287
288            ! 3.1) Passive tracer ZONAL advection trends
289            ztrtrd(:,:,:) = 0.e0
290
291            DO jk = 1, jpkm1
292               DO jj = 2, jpjm1
293                  DO ji = fs_2, fs_jpim1
294                     ! recompute the trends in i-direction as Uh gradh(T)
295# if  ! defined key_zco
296                     zbtr = zbtr2(ji,jj) / fse3t(ji,jj,jk)
297                     zfui = 0.5 * e2u(ji  ,jj) * fse3u(ji,  jj,jk) * zun(ji,  jj,jk)
298                     zfui1= 0.5 * e2u(ji-1,jj) * fse3u(ji-1,jj,jk) * zun(ji-1,jj,jk)
299# else
300                     zbtr = zbtr2(ji,jj)
301                     zfui = 0.5 * e2u(ji  ,jj) * zun(ji,  jj,jk)
302                     zfui1= 0.5 * e2u(ji-1,jj) * zun(ji-1,jj,jk)
303# endif
304                     ztai = - zbtr * ( zfui  * ( trn(ji+1,jj  ,jk,jn) - trn(ji,  jj,jk,jn) )    &
305                          &          + zfui1 * ( trn(ji,  jj,  jk,jn) - trn(ji-1,jj,jk,jn) ) )
306
307                     ! save i- and j- advective trends computed as Uh gradh(T)
308                     ztrtrd(ji,jj,jk) = ztai
309                  END DO
310               END DO
311            END DO
312
313            IF( luttrd(jn) ) CALL trd_mod_trc(ztrtrd, jn, jptrc_trd_xad, kt)   ! handle the trend
314
315            ! 3.2)  Passive tracer MERIDIONAL advection trends
316            ztrtrd(:,:,:) = 0.e0
317
318            DO jk = 1, jpkm1
319               DO jj = 2, jpjm1
320                  DO ji = fs_2, fs_jpim1
321                     ! recompute the trends in j-direction as Uh gradh(T)
322# if ! defined key_zco
323                     zbtr = zbtr2(ji,jj) / fse3t(ji,jj,jk)
324                     zfvj = 0.5 * e1v(ji,jj  ) * fse3v(ji,jj  ,jk) * zvn(ji,jj  ,jk)
325                     zfvj1= 0.5 * e1v(ji,jj-1) * fse3v(ji,jj-1,jk) * zvn(ji,jj-1,jk)
326# else
327                     zbtr = zbtr2(ji,jj)
328                     zfvj = 0.5 * e1v(ji,jj  ) * zvn(ji,jj  ,jk)
329                     zfvj1= 0.5 * e1v(ji,jj-1) * zvn(ji,jj-1,jk)
330# endif
331                     ztaj = - zbtr * ( zfvj  * ( trn(ji  ,jj+1,jk,jn) - trn(ji,jj  ,jk,jn) )    &
332                          &          + zfvj1 * ( trn(ji  ,jj  ,jk,jn) - trn(ji,jj-1,jk,jn) ) )
333
334                     ! save i- and j- advective trends computed as Uh gradh(T)
335                     ztrtrd(ji,jj,jk) = ztaj
336                  END DO
337               END DO
338            END DO
339
340            IF( luttrd(jn) ) CALL trd_mod_trc(ztrtrd, jn, jptrc_trd_yad, kt)   ! handle the trend
341
342         ENDIF TRDTRC_XY
343         !                                                    ! ===========
344      END DO                                                  ! tracer loop
345      !                                                       ! ===========
346
347      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
348         WRITE(charout, FMT="('centered2 - had')")
349         CALL prt_ctl_trc_info(charout)
350         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd')
351      ENDIF
352     
353      ! II. Vertical advection
354      ! ----------------------
355      DO jn = 1, jptra
356
357         ! Bottom value : flux set to zero
358         zwx(:,:,jpk) = 0.e0 
359
360         ! Surface value
361         IF ( lk_dynspg_rl ) THEN       ! rigid lid : flux set to zero
362            zwx(:,:, 1 ) = 0.e0 
363         ELSE                           ! free surface-constant volume
364            zwx(:,:, 1 ) = zwn(:,:,1) * trn(:,:,1,jn)
365         ENDIF
366
367         ! 1. Vertical advective fluxes
368         ! ----------------------------
369
370         ! Second order centered tracer flux at w-point
371
372         DO jk = 2, jpk
373            DO jj = 2, jpjm1
374               DO ji = fs_2, fs_jpim1   ! vector opt.
375                  ! upstream indicator
376                  zcofk = MAX( zind(ji,jj,jk-1), zind(ji,jj,jk) )
377                  ! velocity * 1/2
378                  zhw = 0.5 * zwn(ji,jj,jk)
379                  ! upstream scheme
380                  zfp_w = zhw + ABS( zhw )
381                  zfm_w = zhw - ABS( zhw )
382                  zupst = zfp_w * trb(ji,jj,jk,jn) + zfm_w * trb(ji,jj,jk-1,jn)
383                  ! centered scheme
384                  zcent = zhw * ( trn(ji,jj,jk,jn) + trn(ji,jj,jk-1,jn) )
385                  ! centered scheme
386                  zwx(ji,jj,jk) = zcofk * zupst + (1.-zcofk) * zcent
387               END DO
388            END DO
389         END DO
390
391
392         ! 2. Tracer flux divergence at t-point added to the general trend
393         ! -------------------------
394
395         DO jk = 1, jpkm1
396            DO jj = 2, jpjm1
397               DO ji = fs_2, fs_jpim1   ! vector opt.
398                  ze3tr = 1. / fse3t(ji,jj,jk)
399                  ! vertical advective trends
400                  ztra = - ze3tr * ( zwx(ji,jj,jk) - zwx(ji,jj,jk+1) )
401                  ! add it to the general tracer trends
402                  tra(ji,jj,jk,jn) =  tra(ji,jj,jk,jn) + ztra
403#if defined key_trc_diatrd
404                  ! save the vertical advective trends computed as w gradz(T)
405                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),3) = ztra - trn(ji,jj,jk,jn) * hdivn(ji,jj,jk)
406#endif
407
408               END DO
409            END DO
410         END DO
411
412         ! 3. Save the vertical advective trends for diagnostic
413         ! ----------------------------------------------------
414
415         TRDTRC_Z : IF( l_trdtrc )THEN
416            ztrtrd(:,:,:) = 0.e0
417
418            ! Compute T/S vertical advection trends
419            DO jk = 1, jpkm1
420               DO jj = 2, jpjm1
421                  DO ji = fs_2, fs_jpim1
422                     ze3tr = 1. / fse3t(ji,jj,jk)
423                     ! vertical advective trends
424                     ztra = - ze3tr * ( zwx(ji,jj,jk) - zwx(ji,jj,jk+1) )
425                     ! save the vertical advective trends computed as w gradz(T)
426                     ztrtrd(ji,jj,jk) = ztra - trn(ji,jj,jk,jn) * hdivn(ji,jj,jk)
427                  END DO
428               END DO
429            END DO
430
431            IF( luttrd(jn) ) CALL trd_mod_trc(ztrtrd, jn, jptrc_trd_zad, kt)  ! handle the trend
432
433         ENDIF TRDTRC_Z
434         !                                                    ! ===========
435      END DO                                                  ! tracer loop
436      !                                                       ! ===========
437
438      IF( l_trdtrc ) DEALLOCATE( ztrtrd )
439
440      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
441         WRITE(charout, FMT="('centered - zad')")
442         CALL prt_ctl_trc_info(charout)
443         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd')
444      ENDIF
445
446   END SUBROUTINE trc_adv_cen2
447
448   SUBROUTINE ups_orca_set
449      !!----------------------------------------------------------------------
450      !!                  ***  ROUTINE ups_orca_set  ***
451      !!
452      !! ** Purpose :   add a portion of upstream scheme in area where the
453      !!                centered scheme generates too strong overshoot
454      !!
455      !! ** Method  :   orca (R4 and R2) confiiguration setting. Set upsmsk
456      !!                array to nozero value in some straith.
457      !!
458      !! ** Action : - upsmsk set to 1 at some strait, 0 elsewhere for orca
459      !!----------------------------------------------------------------------
460      INTEGER  ::   ii0, ii1, ij0, ij1      ! temporary integers
461      !!----------------------------------------------------------------------
462
463      ! mixed upstream/centered scheme near river mouths
464      ! ------------------------------------------------
465      SELECT CASE ( jp_cfg )
466      !                                        ! =======================
467      CASE ( 4 )                               !  ORCA_R4 configuration
468         !                                     ! =======================
469         !                                          ! Gibraltar Strait
470         ii0 =  70   ;   ii1 =  71
471         ij0 =  52   ;   ij1 =  53   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50
472         !
473         !                                     ! =======================
474      CASE ( 2 )                               !  ORCA_R2 configuration
475         !                                     ! =======================
476         !                                          ! Gibraltar Strait
477         ij0 = 102   ;   ij1 = 102
478         ii0 = 138   ;   ii1 = 138   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.20
479         ii0 = 139   ;   ii1 = 139   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.40
480         ii0 = 140   ;   ii1 = 140   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50
481         ij0 = 101   ;   ij1 = 102
482         ii0 = 141   ;   ii1 = 141   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50
483         !                                          ! Bab el Mandeb Strait
484         ij0 =  87   ;   ij1 =  88
485         ii0 = 164   ;   ii1 = 164   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.10
486         ij0 =  88   ;   ij1 =  88
487         ii0 = 163   ;   ii1 = 163   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25
488         ii0 = 162   ;   ii1 = 162   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.40
489         ii0 = 160   ;   ii1 = 161   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50
490         ij0 =  89   ;   ij1 =  89
491         ii0 = 158   ;   ii1 = 160   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25
492         ij0 =  90   ;   ij1 =  90
493         ii0 = 160   ;   ii1 = 160   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25
494         !                                          ! Sound Strait
495         ij0 = 116   ;   ij1 = 116
496         ii0 = 145   ;   ii1 = 147   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50
497         !
498      END SELECT
499
500   END SUBROUTINE ups_orca_set
501
502#else
503
504   !!----------------------------------------------------------------------
505   !!   Default option                                         Empty module
506   !!----------------------------------------------------------------------
507CONTAINS
508   SUBROUTINE trc_adv_cen2( kt ) 
509      INTEGER, INTENT(in) :: kt
510      WRITE(*,*) 'trc_adv_cen2: You should not have seen this print! error?', kt
511   END SUBROUTINE trc_adv_cen2
512#endif
513   !!======================================================================
514END MODULE trcadv_cen2
Note: See TracBrowser for help on using the repository browser.