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 trunk/NEMO/OPA_SRC/OBC – NEMO

source: trunk/NEMO/OPA_SRC/OBC/obctra.F90 @ 78

Last change on this file since 78 was 78, checked in by opalod, 20 years ago

CT : UPDATE052 : change logical lpXXXobc to lp_obc_XXX for Open Boundaries case

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