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 @ 1175

Last change on this file since 1175 was 1175, checked in by cetlod, 16 years ago

update transport modules to take into account new trends organization, see ticket:248

  • Property svn:executable set to *
  • Property svn:keywords set to Id
File size: 23.3 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_s_coord || defined key_partial_steps
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!CDIR BEGIN COLLAPSE
287         TRDTRC_XY : IF( l_trdtrc )THEN
288
289            ! 3.1) Passive tracer ZONAL advection trends
290            ztrtrd(:,:,:) = 0.e0
291
292            DO jk = 1, jpkm1
293               DO jj = 2, jpjm1
294                  DO ji = fs_2, fs_jpim1
295                     ! recompute the trends in i-direction as Uh gradh(T)
296# if  ! defined key_zco
297                     zbtr = zbtr2(ji,jj) / fse3t(ji,jj,jk)
298                     zfui = 0.5 * e2u(ji  ,jj) * fse3u(ji,  jj,jk) * zun(ji,  jj,jk)
299                     zfui1= 0.5 * e2u(ji-1,jj) * fse3u(ji-1,jj,jk) * zun(ji-1,jj,jk)
300# else
301                     zbtr = zbtr2(ji,jj)
302                     zfui = 0.5 * e2u(ji  ,jj) * zun(ji,  jj,jk)
303                     zfui1= 0.5 * e2u(ji-1,jj) * zun(ji-1,jj,jk)
304# endif
305                     ztai = - zbtr * ( zfui  * ( trn(ji+1,jj  ,jk,jn) - trn(ji,  jj,jk,jn) )    &
306                          &          + zfui1 * ( trn(ji,  jj,  jk,jn) - trn(ji-1,jj,jk,jn) ) )
307
308                     ! save i- and j- advective trends computed as Uh gradh(T)
309                     ztrtrd(ji,jj,jk) = ztai
310                  END DO
311               END DO
312            END DO
313
314            IF( luttrd(jn) ) CALL trd_mod_trc(ztrtrd, jn, jptrc_trd_xad, kt)   ! handle the trend
315
316            ! 3.2)  Passive tracer MERIDIONAL advection trends
317            ztrtrd(:,:,:) = 0.e0
318
319            DO jk = 1, jpkm1
320               DO jj = 2, jpjm1
321                  DO ji = fs_2, fs_jpim1
322                     ! recompute the trends in j-direction as Uh gradh(T)
323# if ! defined key_zco
324                     zbtr = zbtr2(ji,jj) / fse3t(ji,jj,jk)
325                     zfvj = 0.5 * e1v(ji,jj  ) * fse3v(ji,jj  ,jk) * zvn(ji,jj  ,jk)
326                     zfvj1= 0.5 * e1v(ji,jj-1) * fse3v(ji,jj-1,jk) * zvn(ji,jj-1,jk)
327# else
328                     zbtr = zbtr2(ji,jj)
329                     zfvj = 0.5 * e1v(ji,jj  ) * zvn(ji,jj  ,jk)
330                     zfvj1= 0.5 * e1v(ji,jj-1) * zvn(ji,jj-1,jk)
331# endif
332                     ztaj = - zbtr * ( zfvj  * ( trn(ji  ,jj+1,jk,jn) - trn(ji,jj  ,jk,jn) )    &
333                          &          + zfvj1 * ( trn(ji  ,jj  ,jk,jn) - trn(ji,jj-1,jk,jn) ) )
334
335                     ! save i- and j- advective trends computed as Uh gradh(T)
336                     ztrtrd(ji,jj,jk) = ztaj
337                  END DO
338               END DO
339            END DO
340
341            IF( luttrd(jn) ) CALL trd_mod_trc(ztrtrd, jn, jptrc_trd_yad, kt)   ! handle the trend
342
343         ENDIF TRDTRC_XY
344!CDIR END
345         !                                                    ! ===========
346      END DO                                                  ! tracer loop
347      !                                                       ! ===========
348
349      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
350         WRITE(charout, FMT="('centered2 - had')")
351         CALL prt_ctl_trc_info(charout)
352         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd')
353      ENDIF
354     
355      ! II. Vertical advection
356      ! ----------------------
357      DO jn = 1, jptra
358
359         ! Bottom value : flux set to zero
360         zwx(:,:,jpk) = 0.e0 
361
362         ! Surface value
363         IF ( lk_dynspg_rl ) THEN       ! rigid lid : flux set to zero
364            zwx(:,:, 1 ) = 0.e0 
365         ELSE                           ! 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!CDIR BEGIN COLLAPSE
418         TRDTRC_Z : IF( l_trdtrc )THEN
419            ztrtrd(:,:,:) = 0.e0
420
421            ! Compute T/S vertical advection trends
422            DO jk = 1, jpkm1
423               DO jj = 2, jpjm1
424                  DO ji = fs_2, fs_jpim1
425                     ze3tr = 1. / fse3t(ji,jj,jk)
426                     ! vertical advective trends
427                     ztra = - ze3tr * ( zwx(ji,jj,jk) - zwx(ji,jj,jk+1) )
428                     ! save the vertical advective trends computed as w gradz(T)
429                     ztrtrd(ji,jj,jk) = ztra - trn(ji,jj,jk,jn) * hdivn(ji,jj,jk)
430                  END DO
431               END DO
432            END DO
433
434            IF( luttrd(jn) ) CALL trd_mod_trc(ztrtrd, jn, jptrc_trd_zad, kt)  ! handle the trend
435
436         ENDIF TRDTRC_Z
437!CDIR END
438         !                                                    ! ===========
439      END DO                                                  ! tracer loop
440      !                                                       ! ===========
441
442      IF( l_trdtrc ) DEALLOCATE( ztrtrd )
443
444      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
445         WRITE(charout, FMT="('centered - zad')")
446         CALL prt_ctl_trc_info(charout)
447         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd')
448      ENDIF
449
450   END SUBROUTINE trc_adv_cen2
451
452   SUBROUTINE ups_orca_set
453      !!----------------------------------------------------------------------
454      !!                  ***  ROUTINE ups_orca_set  ***
455      !!
456      !! ** Purpose :   add a portion of upstream scheme in area where the
457      !!                centered scheme generates too strong overshoot
458      !!
459      !! ** Method  :   orca (R4 and R2) confiiguration setting. Set upsmsk
460      !!                array to nozero value in some straith.
461      !!
462      !! ** Action : - upsmsk set to 1 at some strait, 0 elsewhere for orca
463      !!----------------------------------------------------------------------
464      INTEGER  ::   ii0, ii1, ij0, ij1      ! temporary integers
465      !!----------------------------------------------------------------------
466
467      ! mixed upstream/centered scheme near river mouths
468      ! ------------------------------------------------
469      SELECT CASE ( jp_cfg )
470      !                                        ! =======================
471      CASE ( 4 )                               !  ORCA_R4 configuration
472         !                                     ! =======================
473         !                                          ! Gibraltar Strait
474         ii0 =  70   ;   ii1 =  71
475         ij0 =  52   ;   ij1 =  53   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50
476         !
477         !                                     ! =======================
478      CASE ( 2 )                               !  ORCA_R2 configuration
479         !                                     ! =======================
480         !                                          ! Gibraltar Strait
481         ij0 = 102   ;   ij1 = 102
482         ii0 = 138   ;   ii1 = 138   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.20
483         ii0 = 139   ;   ii1 = 139   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.40
484         ii0 = 140   ;   ii1 = 140   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50
485         ij0 = 101   ;   ij1 = 102
486         ii0 = 141   ;   ii1 = 141   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50
487         !                                          ! Bab el Mandeb Strait
488         ij0 =  87   ;   ij1 =  88
489         ii0 = 164   ;   ii1 = 164   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.10
490         ij0 =  88   ;   ij1 =  88
491         ii0 = 163   ;   ii1 = 163   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25
492         ii0 = 162   ;   ii1 = 162   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.40
493         ii0 = 160   ;   ii1 = 161   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50
494         ij0 =  89   ;   ij1 =  89
495         ii0 = 158   ;   ii1 = 160   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25
496         ij0 =  90   ;   ij1 =  90
497         ii0 = 160   ;   ii1 = 160   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25
498         !                                          ! Sound Strait
499         ij0 = 116   ;   ij1 = 116
500         ii0 = 145   ;   ii1 = 147   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50
501         !
502      END SELECT
503
504   END SUBROUTINE ups_orca_set
505
506#else
507
508   !!----------------------------------------------------------------------
509   !!   Default option                                         Empty module
510   !!----------------------------------------------------------------------
511CONTAINS
512   SUBROUTINE trc_adv_cen2( kt ) 
513      INTEGER, INTENT(in) :: kt
514      WRITE(*,*) 'trc_adv_cen2: You should not have seen this print! error?', kt
515   END SUBROUTINE trc_adv_cen2
516#endif
517   !!======================================================================
518END MODULE trcadv_cen2
Note: See TracBrowser for help on using the repository browser.