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.
obctra.F90 in branches/TAM_V3_0/NEMO/OPA_SRC/OBC – NEMO

source: branches/TAM_V3_0/NEMO/OPA_SRC/OBC/obctra.F90 @ 2786

Last change on this file since 2786 was 1884, checked in by rblod, 14 years ago

Light adaptation of NEMO direct model routine to handle TAM

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 22.9 KB
Line 
1MODULE obctra
2   !!=================================================================================
3   !!                       ***  MODULE  obctra  ***
4   !! Ocean tracers:   Radiation of tracers on each open boundary
5   !!=================================================================================
6#if defined key_obc
7   !!---------------------------------------------------------------------------------
8   !!   'key_obc'      :                                      Open Boundary Conditions
9   !!---------------------------------------------------------------------------------
10   !!   obc_tra        : call the subroutine for each open boundary
11   !!   obc_tra_east   : radiation of the east open boundary tracers
12   !!   obc_tra_west   : radiation of the west open boundary tracers
13   !!   obc_tra_north  : radiation of the north open boundary tracers
14   !!   obc_tra_south  : radiation of the south open boundary tracers
15   !!----------------------------------------------------------------------------------
16   !! * Modules used
17   USE oce             ! ocean dynamics and tracers variables
18   USE dom_oce         ! ocean space and time domain variables
19   USE phycst          ! physical constants
20   USE obc_oce         ! ocean open boundary conditions
21   USE lib_mpp         ! ???
22   USE lbclnk          ! ???
23   USE in_out_manager  ! I/O manager
24
25   IMPLICIT NONE
26   PRIVATE
27
28   !! * Accessibility
29   PUBLIC obc_tra     ! routine called in tranxt.F90
30
31   !! * Module variables
32   INTEGER ::      & ! ... boundary space indices
33      nib   = 1,   & ! nib   = boundary point
34      nibm  = 2,   & ! nibm  = 1st interior point
35      nibm2 = 3,   & ! nibm2 = 2nd interior point
36                     ! ... boundary time indices
37      nit   = 1,   & ! nit    = now
38      nitm  = 2,   & ! nitm   = before
39      nitm2 = 3      ! nitm2  = before-before
40
41   REAL(wp) ::     &
42      rtaue  , rtauw  , rtaun  , rtaus  ,  &  ! Boundary restoring coefficient
43      rtauein, rtauwin, rtaunin, rtausin      ! Boundary restoring coefficient for inflow
44
45   LOGICAL  ::   ll_fbc
46   
47   !! * Substitutions
48#  include "obc_vectopt_loop_substitute.h90"
49   !!---------------------------------------------------------------------------------
50   !!   OPA 9.0 , LOCEAN-IPSL (2005)
51   !! $Id$
52   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt
53   !!---------------------------------------------------------------------------------
54
55CONTAINS
56
57   SUBROUTINE obc_tra( kt )
58      !!-------------------------------------------------------------------------------
59      !!                 ***  SUBROUTINE obc_tra  ***
60      !!                   
61      !! ** Purpose :   Compute tracer fields (t,s) along the open boundaries.
62      !!      This routine is called by the tranxt.F routine and updates ta,sa
63      !!      which are the actual temperature and salinity fields.
64      !!        The logical variable lp_obc_east, and/or lp_obc_west, and/or lp_obc_north,
65      !!      and/or lp_obc_south allow the user to determine which boundary is an
66      !!      open one (must be done in the param_obc.h90 file).
67      !!
68      !! Reference :
69      !!   Marchesiello P., 1995, these de l'universite J. Fourier, Grenoble, France.
70      !!
71      !!  History :
72      !!        !  95-03 (J.-M. Molines) Original, SPEM
73      !!        !  97-07 (G. Madec, J.-M. Molines) addition
74      !!   8.5  !  02-10 (C. Talandier, A-M. Treguier) F90
75      !!----------------------------------------------------------------------
76      !! * Arguments
77      INTEGER, INTENT( in ) ::   kt
78      !!----------------------------------------------------------------------
79
80      ! 0. Local constant initialization
81
82      IF( kt == nit000 .OR. ln_rstart) THEN
83         ! ... Boundary restoring coefficient
84         rtaue = 2. * rdt / rdpeob
85         rtauw = 2. * rdt / rdpwob
86         rtaun = 2. * rdt / rdpnob
87         rtaus = 2. * rdt / rdpsob
88         ! ... Boundary restoring coefficient for inflow ( all boundaries)
89         rtauein = 2. * rdt / rdpein 
90         rtauwin = 2. * rdt / rdpwin
91         rtaunin = 2. * rdt / rdpnin
92         rtausin = 2. * rdt / rdpsin 
93      END IF
94
95      ll_fbc = ( ( kt < nit000+3 ) .AND. .NOT. ln_rstart )
96     
97      IF ( cp_cfg == "indian" ) THEN
98         ll_fbc = ( ( kt < nit000+30 ) .AND. .NOT. ln_obc_rstart )
99      ENDIF
100
101      IF( lp_obc_east  )   CALL obc_tra_east     ! East open boundary
102
103      IF( lp_obc_west  )   CALL obc_tra_west     ! West open boundary
104
105      IF( lp_obc_north )   CALL obc_tra_north    ! North open boundary
106
107      IF( lp_obc_south )   CALL obc_tra_south    ! South open boundary
108
109
110      IF( lk_mpp ) THEN                  !!bug ???
111         IF( kt >= nit000+3 .AND. ln_rstart ) THEN
112            CALL lbc_lnk( tb, 'T', 1. )
113            CALL lbc_lnk( sb, 'T', 1. )
114         END IF
115         CALL lbc_lnk( ta, 'T', 1. )
116         CALL lbc_lnk( sa, 'T', 1. )
117      ENDIF
118
119   END SUBROUTINE obc_tra
120
121
122   SUBROUTINE obc_tra_east
123      !!------------------------------------------------------------------------------
124      !!                ***  SUBROUTINE obc_tra_east  ***
125      !!                 
126      !! ** Purpose :
127      !!      Apply the radiation algorithm on east OBC tracers ta, sa using the
128      !!      phase velocities calculated in obc_rad_east subroutine in obcrad.F90 module
129      !!      If the logical lfbceast is .TRUE., there is no radiation but only fixed OBC
130      !!
131      !!  History :
132      !!         ! 95-03 (J.-M. Molines) Original from SPEM
133      !!         ! 97-07 (G. Madec, J.-M. Molines) additions
134      !!         ! 97-12 (M. Imbard) Mpp adaptation
135      !!         ! 00-06 (J.-M. Molines)
136      !!    8.5  ! 02-10 (C. Talandier, A-M. Treguier) F90
137      !!------------------------------------------------------------------------------
138      !! * Arguments
139
140      !! * Local declaration
141      INTEGER ::   ji, jj, jk      ! dummy loop indices
142      REAL(wp) ::   z05cx, ztau, zin
143      !!------------------------------------------------------------------------------
144
145      ! 1. First three time steps and more if lfbceast is .TRUE.
146      !    In that case open boundary conditions are FIXED.
147      ! --------------------------------------------------------
148
149      IF ( ll_fbc .OR. lfbceast ) THEN
150
151        DO ji = fs_nie0+1, fs_nie1+1 ! Vector opt.
152            DO jk = 1, jpkm1
153               DO jj = 1, jpj
154                  ta(ji,jj,jk) = ta(ji,jj,jk) * (1. - temsk(jj,jk)) + &
155                                 tfoe(jj,jk)*temsk(jj,jk)
156                  sa(ji,jj,jk) = sa(ji,jj,jk) * (1. - temsk(jj,jk)) + &
157                                 sfoe(jj,jk)*temsk(jj,jk)
158               END DO
159            END DO
160         END DO
161
162      ELSE
163
164      ! 2. Beyond the fourth time step if lfbceast is .FALSE.
165      ! -----------------------------------------------------
166
167         ! Temperature and salinity radiation
168         ! ----------------------------------
169         !
170         !            nibm2      nibm      nib
171         !              |   nibm  |   nib///|///
172         !              |    |    |    |////|///
173         !  jj   line --v----f----v----f----v---
174         !              |    |    |    |////|///
175         !                   |         |///   //
176         !  jj   line   T    u    T    u/// T //
177         !                   |         |///   //
178         !              |    |    |    |////|///
179         !  jj-1 line --v----f----v----f----v---
180         !              |    |    |    |////|///
181         !                jpieob-1    jpieob / ///
182         !              |         |         |
183         !           jpieob-1    jpieob     jpieob+1
184         !
185         ! ... radiative conditions + relaxation toward a climatology
186         !     the phase velocity is taken as the phase velocity of the tangen-
187         !     tial velocity (here vn), which have been saved in (u_cxebnd,v_cxebnd)
188         ! ... (jpjedp1, jpjefm1), jpieob+1
189         DO ji = fs_nie0+1, fs_nie1+1 ! Vector opt.
190            DO jk = 1, jpkm1
191               DO jj = 2, jpjm1
192         ! ... i-phase speed ratio (from averaged of v_cxebnd)
193                  z05cx = ( 0.5 * ( v_cxebnd(jj,jk) + v_cxebnd(jj-1,jk) ) ) / e1t(ji-1,jj)
194                  z05cx = min( z05cx, 1. )
195         ! ... z05cx=< 0, inflow  zin=0, ztau=1   
196         !           > 0, outflow zin=1, ztau=rtaue
197                  zin = sign( 1., z05cx )
198                  zin = 0.5*( zin + abs(zin) )
199         ! ... for inflow rtauein is used for relaxation coefficient else rtaue
200                  ztau = (1.-zin ) * rtauein  + zin * rtaue
201                  z05cx = z05cx * zin
202         ! ... update ( ta, sa ) with radiative or climatological (t, s)
203                  ta(ji,jj,jk) = ta(ji,jj,jk) * (1. - temsk(jj,jk)) +           & 
204                                 temsk(jj,jk) * ( ( 1. - z05cx - ztau )         &
205                                 * tebnd(jj,jk,nib ,nitm) + 2.*z05cx              &
206                                 * tebnd(jj,jk,nibm,nit ) + ztau * tfoe (jj,jk) ) &
207                                 / (1. + z05cx)
208                  sa(ji,jj,jk) = sa(ji,jj,jk) * (1. - temsk(jj,jk)) +           & 
209                                 temsk(jj,jk) * ( ( 1. - z05cx - ztau )         &
210                                 * sebnd(jj,jk,nib ,nitm) + 2.*z05cx              &
211                                 * sebnd(jj,jk,nibm,nit ) + ztau * sfoe (jj,jk) ) &
212                                 / (1. + z05cx)
213               END DO
214            END DO
215         END DO
216
217      END IF
218
219   END SUBROUTINE obc_tra_east
220
221
222   SUBROUTINE obc_tra_west
223      !!------------------------------------------------------------------------------
224      !!                 ***  SUBROUTINE obc_tra_west  ***
225      !!           
226      !! ** Purpose :
227      !!      Apply the radiation algorithm on west OBC tracers ta, sa using the
228      !!      phase velocities calculated in obc_rad_west subroutine in obcrad.F90 module
229      !!      If the logical lfbcwest is .TRUE., there is no radiation but only fixed OBC
230      !!
231      !!  History :
232      !!         ! 95-03 (J.-M. Molines) Original from SPEM
233      !!         ! 97-07 (G. Madec, J.-M. Molines) additions
234      !!         ! 97-12 (M. Imbard) Mpp adaptation
235      !!         ! 00-06 (J.-M. Molines)
236      !!    8.5  ! 02-10 (C. Talandier, A-M. Treguier) F90
237      !!------------------------------------------------------------------------------
238      !! * Arguments
239
240      !! * Local declaration
241      INTEGER ::   ji, jj, jk      ! dummy loop indices
242      REAL(wp) ::   z05cx, ztau, zin
243      !!------------------------------------------------------------------------------
244
245      ! 1. First three time steps and more if lfbcwest is .TRUE.
246      !    In that case open boundary conditions are FIXED.
247      ! --------------------------------------------------------
248
249      IF ( ll_fbc .OR. lfbcwest ) THEN
250
251         DO ji = fs_niw0, fs_niw1 ! Vector opt.
252            DO jk = 1, jpkm1
253               DO jj = 1, jpj
254                  ta(ji,jj,jk) = ta(ji,jj,jk) * (1. - twmsk(jj,jk)) + &
255                                 tfow(jj,jk)*twmsk(jj,jk)
256                  sa(ji,jj,jk) = sa(ji,jj,jk) * (1. - twmsk(jj,jk)) + &
257                                 sfow(jj,jk)*twmsk(jj,jk)
258               END DO
259            END DO
260         END DO
261
262      ELSE
263
264      ! 2. Beyond the fourth time step if lfbcwest is .FALSE.
265      ! -----------------------------------------------------
266         
267         ! Temperature and salinity radiation
268         ! ----------------------------------
269         !
270         !          nib       nibm     nibm2
271         !     nib///|   nibm  |  nibm2  |
272         !   ///|////|    |    |    |    |   
273         !   ---v----f----v----f----v----f-- jj   line
274         !   ///|////|    |    |    |    |   
275         !   //   ///|         |         |   
276         !   // T ///u    T    u    T    u   jj   line
277         !   //   ///|         |         |   
278         !   ///|////|    |    |    |    |   
279         !   ---v----f----v----f----v----f-- jj-1 line
280         !   ///|////|    |    |    |    |   
281         !         jpiwob    jpiwob+1    jpiwob+2
282         !      |         |         |       
283         !    jpiwob    jpiwob+1   jpiwob+2
284         !
285         ! ... radiative conditions + relaxation toward a climatology
286         ! ... the phase velocity is taken as the phase velocity of the tangen-
287         ! ... tial velocity (here vn), which have been saved in (v_cxwbnd)
288         DO ji = fs_niw0, fs_niw1 ! Vector opt.
289            DO jk = 1, jpkm1
290               DO jj = 2, jpjm1
291         ! ... i-phase speed ratio (from averaged of v_cxwbnd)
292                  z05cx = (  0.5 * ( v_cxwbnd(jj,jk) + v_cxwbnd(jj-1,jk) ) ) / e1t(ji+1,jj)
293                  z05cx = max( z05cx, -1. )
294         ! ... z05cx > 0, inflow  zin=0, ztau=1   
295         !           < 0, outflow zin=1, ztau=rtauw
296                  zin = sign( 1., -1.* z05cx )
297                  zin = 0.5*( zin + abs(zin) )
298                  ztau = (1.-zin )*rtauwin + zin * rtauw
299                  z05cx = z05cx * zin
300         ! ... update (ta,sa) with radiative or climatological (t, s)
301                  ta(ji,jj,jk) = ta(ji,jj,jk) * (1. - twmsk(jj,jk)) +           &
302                                 twmsk(jj,jk) * ( ( 1. + z05cx - ztau )         &
303                                 * twbnd(jj,jk,nib ,nitm) - 2.*z05cx              &
304                                 * twbnd(jj,jk,nibm,nit ) + ztau * tfow (jj,jk) ) &
305                                 / (1. - z05cx)
306                  sa(ji,jj,jk) = sa(ji,jj,jk) * (1. - twmsk(jj,jk)) +           &
307                                 twmsk(jj,jk) * ( ( 1. + z05cx - ztau )         &
308                                 * swbnd(jj,jk,nib ,nitm) - 2.*z05cx              &
309                                 * swbnd(jj,jk,nibm,nit ) + ztau * sfow (jj,jk) ) &
310                                 / (1. - z05cx)
311               END DO
312            END DO
313         END DO
314
315      END IF
316
317   END SUBROUTINE obc_tra_west
318
319
320   SUBROUTINE obc_tra_north
321      !!------------------------------------------------------------------------------
322      !!                 ***  SUBROUTINE obc_tra_north  ***
323      !!
324      !! ** Purpose :
325      !!      Apply the radiation algorithm on north OBC tracers ta, sa using the
326      !!      phase velocities calculated in obc_rad_north subroutine in obcrad.F90 module
327      !!      If the logical lfbcnorth is .TRUE., there is no radiation but only fixed OBC
328      !!
329      !!  History :
330      !!         ! 95-03 (J.-M. Molines) Original from SPEM
331      !!         ! 97-07 (G. Madec, J.-M. Molines) additions
332      !!         ! 97-12 (M. Imbard) Mpp adaptation
333      !!         ! 00-06 (J.-M. Molines)
334      !!    8.5  ! 02-10 (C. Talandier, A-M. Treguier) F90
335      !!------------------------------------------------------------------------------
336      !! * Arguments
337
338      !! * Local declaration
339      INTEGER ::   ji, jj, jk      ! dummy loop indices
340      REAL(wp) ::   z05cx, ztau, zin
341      !!------------------------------------------------------------------------------
342
343      ! 1. First three time steps and more if lfbcnorth is .TRUE.
344      !    In that case open boundary conditions are FIXED.
345      ! --------------------------------------------------------
346
347      IF ( ll_fbc .OR. lfbcnorth ) THEN
348
349         DO jj = fs_njn0+1, fs_njn1+1  ! Vector opt.
350            DO jk = 1, jpkm1
351               DO ji = 1, jpi
352                  ta(ji,jj,jk)= ta(ji,jj,jk) * (1.-tnmsk(ji,jk)) + &
353                                tnmsk(ji,jk) * tfon(ji,jk)
354                  sa(ji,jj,jk)= sa(ji,jj,jk) * (1.-tnmsk(ji,jk)) + &
355                                tnmsk(ji,jk) * sfon(ji,jk)
356               END DO
357            END DO
358         END DO
359
360      ELSE
361
362      ! 2. Beyond the fourth time step if lfbcnorth is .FALSE.
363      ! -------------------------------------------------------
364         
365         ! Temperature and salinity radiation
366         ! ----------------------------------
367         !
368         !           ji-1   ji   ji   ji +1
369         !             |
370         !    nib //// u // T // u // T //   jpjnob + 1
371         !        /////|//////////////////
372         !    nib  ----f----v----f----v---   jpjnob
373         !             |         |       
374         !      nibm-- u -- T -- u -- T --   jpjnob
375         !             |         |           
376         !   nibm  ----f----v----f----v---  jpjnob-1
377         !             |         |     
378         !     nibm2-- u -- T -- T -- T --  jpjnob-1
379         !             |         |   
380         !   nibm2 ----f----v----f----v---  jpjnob-2
381         !             |         |
382         !
383         ! ... radiative conditions + relaxation toward a climatology
384         ! ... the phase velocity is taken as the normal phase velocity of the tangen-
385         ! ... tial velocity (here un), which has been saved in (u_cynbnd)
386         ! ... jpjnob+1,(jpindp1, jpinfm1)
387         DO jj = fs_njn0+1, fs_njn1+1 ! Vector opt.
388            DO jk = 1, jpkm1
389               DO ji = 2, jpim1
390         ! ... j-phase speed ratio (from averaged of vtnbnd)
391         !        (bounded by 1)
392                  z05cx = ( 0.5 * ( u_cynbnd(ji,jk) + u_cynbnd(ji-1,jk) ) ) / e2t(ji,jj-1)
393                  z05cx = min( z05cx, 1. )
394         ! ... z05cx=< 0, inflow  zin=0, ztau=1   
395         !           > 0, outflow zin=1, ztau=rtaun
396                  zin = sign( 1., z05cx )
397                  zin = 0.5*( zin + abs(zin) )
398         ! ... for inflow rtaunin is used for relaxation coefficient else rtaun
399                  ztau = (1.-zin ) * rtaunin + zin * rtaun
400                  z05cx = z05cx * zin
401         ! ... update (ta,sa) with radiative or climatological (t, s)
402                  ta(ji,jj,jk) = ta(ji,jj,jk) * (1.-tnmsk(ji,jk)) +             &
403                                 tnmsk(ji,jk) * ( ( 1. - z05cx - ztau )         &
404                                 * tnbnd(ji,jk,nib ,nitm) + 2.*z05cx              &
405                                 * tnbnd(ji,jk,nibm,nit ) + ztau * tfon (ji,jk) ) &
406                                 / (1. + z05cx)
407                  sa(ji,jj,jk) = sa(ji,jj,jk) * (1.-tnmsk(ji,jk)) +             &
408                                 tnmsk(ji,jk) * ( ( 1. - z05cx - ztau )         &
409                                 * snbnd(ji,jk,nib ,nitm) + 2.*z05cx              &
410                                 * snbnd(ji,jk,nibm,nit ) + ztau * sfon (ji,jk) ) &
411                                 / (1. + z05cx)
412               END DO
413            END DO
414         END DO
415
416      END IF
417
418   END SUBROUTINE obc_tra_north
419
420
421   SUBROUTINE obc_tra_south
422      !!------------------------------------------------------------------------------
423      !!                ***  SUBROUTINE obc_tra_south  ***
424      !!     
425      !! ** Purpose :
426      !!      Apply the radiation algorithm on south OBC tracers ta, sa using the
427      !!      phase velocities calculated in obc_rad_south subroutine in obcrad.F90 module
428      !!      If the logical lfbcsouth is .TRUE., there is no radiation but only fixed OBC
429      !!
430      !!  History :
431      !!         ! 95-03 (J.-M. Molines) Original from SPEM
432      !!         ! 97-07 (G. Madec, J.-M. Molines) additions
433      !!         ! 97-12 (M. Imbard) Mpp adaptation
434      !!         ! 00-06 (J.-M. Molines)
435      !!    8.5  ! 02-10 (C. Talandier, A-M Treguier) F90
436      !!------------------------------------------------------------------------------
437      !! * Arguments
438
439      !! * Local declaration
440      INTEGER ::   ji, jj, jk      ! dummy loop indices
441      REAL(wp) ::   z05cx, ztau, zin
442      !!------------------------------------------------------------------------------
443
444      ! 1. First three time steps and more if lfbcsouth is .TRUE.
445      !    In that case open boundary conditions are FIXED.
446      ! --------------------------------------------------------
447
448      IF ( ll_fbc .OR. lfbcsouth ) THEN
449
450         DO jj = fs_njs0, fs_njs1  ! Vector opt.
451            DO jk = 1, jpkm1
452               DO ji = 1, jpi
453                  ta(ji,jj,jk)= ta(ji,jj,jk) * (1.-tsmsk(ji,jk)) + &
454                                tsmsk(ji,jk) * tfos(ji,jk)
455                  sa(ji,jj,jk)= sa(ji,jj,jk) * (1.-tsmsk(ji,jk)) + &
456                                tsmsk(ji,jk) * sfos(ji,jk)
457               END DO
458            END DO
459         END DO
460
461      ELSE
462
463      ! 2. Beyond the fourth time step if lfbcsouth is .FALSE.
464      ! -------------------------------------------------------
465         
466         ! Temperature and salinity radiation
467         ! ----------------------------------
468         !
469         !           ji-1   ji   ji   ji +1
470         !             |         |
471         !   nibm2 ----f----v----f----v---   jpjsob+2
472         !             |         |       
473         !   nibm2 --  u -- T -- u -- T --   jpjsob+2
474         !             |         |           
475         !   nibm  ----f----v----f----v---   jpjsob+1
476         !             |         |     
477         !    nibm --  u -- T -- T -- T --   jpjsob+1
478         !             |         |   
479         !   nib  -----f----v----f----v---   jpjsob
480         !       //////|/////////|////////
481         !    nib //// u // T // u // T //   jpjsob
482         !
483         !... radiative conditions + relaxation toward a climatology
484         !... the phase velocity is taken as the phase velocity of the tangen-
485         !... tial velocity (here un), which has been saved in (u_cysbnd)
486         !... jpjsob,(jpisdp1, jpisfm1)
487         DO jj = fs_njs0, fs_njs1  ! Vector opt.
488            DO jk = 1, jpkm1
489               DO ji = 2, jpim1
490         !... j-phase speed ratio (from averaged of u_cysbnd)
491         !       (bounded by 1)
492                  z05cx = ( 0.5 * ( u_cysbnd(ji,jk) + u_cysbnd(ji-1,jk) ) ) / e2t(ji,jj+1)
493                  z05cx = max( z05cx, -1. )
494         !... z05cx > 0, inflow  zin=0, ztau=1
495         !          < 0, outflow zin=1, ztau=rtaus
496                  zin = sign( 1., -1.* z05cx )
497                  zin = 0.5*( zin + abs(zin) )
498                  ztau = (1.-zin ) + zin * rtaus
499                  z05cx = z05cx * zin
500         !... update (ta,sa) with radiative or climatological (t, s)
501                  ta(ji,jj,jk) = ta(ji,jj,jk) * (1.-tsmsk(ji,jk)) +             &
502                                 tsmsk(ji,jk) * ( ( 1. + z05cx - ztau )         &
503                                 * tsbnd(ji,jk,nib ,nitm) - 2.*z05cx              &
504                                 * tsbnd(ji,jk,nibm,nit ) + ztau * tfos (ji,jk) ) &
505                                 / (1. - z05cx)
506                  sa(ji,jj,jk) = sa(ji,jj,jk) * (1.-tsmsk(ji,jk)) +             &
507                                 tsmsk(ji,jk) * (  ( 1. + z05cx - ztau )        &
508                                 * ssbnd(ji,jk,nib ,nitm) - 2.*z05cx              &
509                                 * ssbnd(ji,jk,nibm,nit ) + ztau * sfos (ji,jk) ) &
510                                 / (1. - z05cx)
511               END DO
512            END DO
513         END DO
514
515      END IF   
516
517   END SUBROUTINE obc_tra_south
518
519#else
520   !!---------------------------------------------------------------------------------
521   !!   Default option                                                    Empty module
522   !!---------------------------------------------------------------------------------
523CONTAINS
524   SUBROUTINE obc_tra      ! Empty routine
525   END SUBROUTINE obc_tra
526#endif
527
528   !!=================================================================================
529END MODULE obctra
Note: See TracBrowser for help on using the repository browser.