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 tags/nemo_v3_2/nemo_v3_2/NEMO/TOP_SRC/TRP – NEMO

source: tags/nemo_v3_2/nemo_v3_2/NEMO/TOP_SRC/TRP/trcadv_cen2.F90 @ 1878

Last change on this file since 1878 was 1878, checked in by flavoni, 14 years ago

initial test for nemogcm

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: trcadv_cen2.F90 1528 2009-07-23 14:38:47Z rblod $
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      !!      variable volume : zero advective flux
89      !!      fixed    volume ("default option) : 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_vvl ) THEN
362            ! variable volume: flux set to zero
363            zwx(:,:, 1 ) = 0.e0 
364         ELSE
365            ! free surface-constant volume
366            zwx(:,:, 1 ) = zwn(:,:,1) * trn(:,:,1,jn)
367         ENDIF
368
369         ! 1. Vertical advective fluxes
370         ! ----------------------------
371
372         ! Second order centered tracer flux at w-point
373
374         DO jk = 2, jpk
375            DO jj = 2, jpjm1
376               DO ji = fs_2, fs_jpim1   ! vector opt.
377                  ! upstream indicator
378                  zcofk = MAX( zind(ji,jj,jk-1), zind(ji,jj,jk) )
379                  ! velocity * 1/2
380                  zhw = 0.5 * zwn(ji,jj,jk)
381                  ! upstream scheme
382                  zfp_w = zhw + ABS( zhw )
383                  zfm_w = zhw - ABS( zhw )
384                  zupst = zfp_w * trb(ji,jj,jk,jn) + zfm_w * trb(ji,jj,jk-1,jn)
385                  ! centered scheme
386                  zcent = zhw * ( trn(ji,jj,jk,jn) + trn(ji,jj,jk-1,jn) )
387                  ! centered scheme
388                  zwx(ji,jj,jk) = zcofk * zupst + (1.-zcofk) * zcent
389               END DO
390            END DO
391         END DO
392
393
394         ! 2. Tracer flux divergence at t-point added to the general trend
395         ! -------------------------
396
397         DO jk = 1, jpkm1
398            DO jj = 2, jpjm1
399               DO ji = fs_2, fs_jpim1   ! vector opt.
400                  ze3tr = 1. / fse3t(ji,jj,jk)
401                  ! vertical advective trends
402                  ztra = - ze3tr * ( zwx(ji,jj,jk) - zwx(ji,jj,jk+1) )
403                  ! add it to the general tracer trends
404                  tra(ji,jj,jk,jn) =  tra(ji,jj,jk,jn) + ztra
405#if defined key_trc_diatrd
406                  ! save the vertical advective trends computed as w gradz(T)
407                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),3) = ztra - trn(ji,jj,jk,jn) * hdivn(ji,jj,jk)
408#endif
409
410               END DO
411            END DO
412         END DO
413
414         ! 3. Save the vertical advective trends for diagnostic
415         ! ----------------------------------------------------
416
417         TRDTRC_Z : IF( l_trdtrc )THEN
418            ztrtrd(:,:,:) = 0.e0
419
420            ! Compute T/S vertical advection trends
421            DO jk = 1, jpkm1
422               DO jj = 2, jpjm1
423                  DO ji = fs_2, fs_jpim1
424                     ze3tr = 1. / fse3t(ji,jj,jk)
425                     ! vertical advective trends
426                     ztra = - ze3tr * ( zwx(ji,jj,jk) - zwx(ji,jj,jk+1) )
427                     ! save the vertical advective trends computed as w gradz(T)
428                     ztrtrd(ji,jj,jk) = ztra - trn(ji,jj,jk,jn) * hdivn(ji,jj,jk)
429                  END DO
430               END DO
431            END DO
432
433            IF( luttrd(jn) ) CALL trd_mod_trc(ztrtrd, jn, jptrc_trd_zad, kt)  ! handle the trend
434
435         ENDIF TRDTRC_Z
436         !                                                    ! ===========
437      END DO                                                  ! tracer loop
438      !                                                       ! ===========
439
440      IF( l_trdtrc ) DEALLOCATE( ztrtrd )
441
442      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
443         WRITE(charout, FMT="('centered - zad')")
444         CALL prt_ctl_trc_info(charout)
445         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd')
446      ENDIF
447
448   END SUBROUTINE trc_adv_cen2
449
450   SUBROUTINE ups_orca_set
451      !!----------------------------------------------------------------------
452      !!                  ***  ROUTINE ups_orca_set  ***
453      !!
454      !! ** Purpose :   add a portion of upstream scheme in area where the
455      !!                centered scheme generates too strong overshoot
456      !!
457      !! ** Method  :   orca (R4 and R2) confiiguration setting. Set upsmsk
458      !!                array to nozero value in some straith.
459      !!
460      !! ** Action : - upsmsk set to 1 at some strait, 0 elsewhere for orca
461      !!----------------------------------------------------------------------
462      INTEGER  ::   ii0, ii1, ij0, ij1      ! temporary integers
463      !!----------------------------------------------------------------------
464
465      ! mixed upstream/centered scheme near river mouths
466      ! ------------------------------------------------
467      SELECT CASE ( jp_cfg )
468      !                                        ! =======================
469      CASE ( 4 )                               !  ORCA_R4 configuration
470         !                                     ! =======================
471         !                                          ! Gibraltar Strait
472         ii0 =  70   ;   ii1 =  71
473         ij0 =  52   ;   ij1 =  53   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50
474         !
475         !                                     ! =======================
476      CASE ( 2 )                               !  ORCA_R2 configuration
477         !                                     ! =======================
478         !                                          ! Gibraltar Strait
479         ij0 = 102   ;   ij1 = 102
480         ii0 = 138   ;   ii1 = 138   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.20
481         ii0 = 139   ;   ii1 = 139   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.40
482         ii0 = 140   ;   ii1 = 140   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50
483         ij0 = 101   ;   ij1 = 102
484         ii0 = 141   ;   ii1 = 141   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50
485         !                                          ! Bab el Mandeb Strait
486         ij0 =  87   ;   ij1 =  88
487         ii0 = 164   ;   ii1 = 164   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.10
488         ij0 =  88   ;   ij1 =  88
489         ii0 = 163   ;   ii1 = 163   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25
490         ii0 = 162   ;   ii1 = 162   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.40
491         ii0 = 160   ;   ii1 = 161   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50
492         ij0 =  89   ;   ij1 =  89
493         ii0 = 158   ;   ii1 = 160   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25
494         ij0 =  90   ;   ij1 =  90
495         ii0 = 160   ;   ii1 = 160   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25
496         !                                          ! Sound Strait
497         ij0 = 116   ;   ij1 = 116
498         ii0 = 145   ;   ii1 = 147   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50
499         !
500      END SELECT
501
502   END SUBROUTINE ups_orca_set
503
504#else
505
506   !!----------------------------------------------------------------------
507   !!   Default option                                         Empty module
508   !!----------------------------------------------------------------------
509CONTAINS
510   SUBROUTINE trc_adv_cen2( kt ) 
511      INTEGER, INTENT(in) :: kt
512      WRITE(*,*) 'trc_adv_cen2: You should not have seen this print! error?', kt
513   END SUBROUTINE trc_adv_cen2
514#endif
515   !!======================================================================
516END MODULE trcadv_cen2
Note: See TracBrowser for help on using the repository browser.