source: CONFIG/UNIFORM/v6/IPSLCM6/SOURCES/NEMO/closea.F90 @ 2223

Last change on this file since 2223 was 2223, checked in by omamce, 7 years ago

O.M.: different pattern for global water conservation.

Great Lakes (North America) added

File size: 21.7 KB
Line 
1MODULE closea
2   !!======================================================================
3   !!                       ***  MODULE  closea  ***
4   !! Closed Seas  : specific treatments associated with closed seas
5   !!======================================================================
6   !! History :   8.2  !  00-05  (O. Marti)  Original code
7   !!             8.5  !  02-06  (E. Durand, G. Madec)  F90
8   !!             9.0  !  06-07  (G. Madec)  add clo_rnf, clo_ups, clo_bat
9   !!        NEMO 3.4  !  03-12  (P.G. Fogli) sbc_clo bug fix & mpp reproducibility
10   !!----------------------------------------------------------------------
11
12   !!----------------------------------------------------------------------
13   !!   dom_clo    : modification of the ocean domain for closed seas cases
14   !!   sbc_clo    : Special handling of closed seas
15   !!   clo_rnf    : set close sea outflows as river mouths (see sbcrnf)
16   !!   clo_ups    : set mixed centered/upstream scheme in closed sea (see traadv_cen2)
17   !!   clo_bat    : set to zero a field over closed sea (see domzrg)
18   !!----------------------------------------------------------------------
19   USE oce             ! dynamics and tracers
20   USE dom_oce         ! ocean space and time domain
21   USE phycst          ! physical constants
22   USE in_out_manager  ! I/O manager
23   !USE iom             ! I/O manager library
24   USE sbc_oce         ! ocean surface boundary conditions
25   USE lib_fortran,    ONLY: glob_sum, DDPDD
26   USE lbclnk          ! lateral boundary condition - MPP exchanges
27   USE lib_mpp         ! MPP library
28   USE timing
29
30   IMPLICIT NONE
31   PRIVATE
32
33   PUBLIC dom_clo      ! routine called by domain module
34   PUBLIC sbc_clo      ! routine called by step module
35   PUBLIC clo_rnf      ! routine called by sbcrnf module
36   PUBLIC clo_ups      ! routine called in traadv_cen2(_jki) module
37   PUBLIC clo_bat      ! routine called in domzgr module
38
39   INTEGER, PUBLIC, PARAMETER          ::   jpncs   = 4      !: number of closed sea
40   INTEGER, PUBLIC, DIMENSION(jpncs)   ::   ncstt            !: Type of closed sea
41   INTEGER, PUBLIC, DIMENSION(jpncs)   ::   ncsi1, ncsj1     !: south-west closed sea limits (i,j)
42   INTEGER, PUBLIC, DIMENSION(jpncs)   ::   ncsi2, ncsj2     !: north-east closed sea limits (i,j)
43   INTEGER, PUBLIC, DIMENSION(jpncs)   ::   ncsnr            !: number of point where run-off pours
44   INTEGER, PUBLIC, DIMENSION(jpncs,4) ::   ncsir, ncsjr     !: Location of runoff
45
46   REAL(wp), DIMENSION (:,:), ALLOCATABLE :: clo_mask        !: Defines area where excess run-off is distributed
47
48   REAL(wp), DIMENSION (jpncs+1)       ::   surf             !: Closed sea surface
49
50   INTEGER :: dia_closea_alloc
51
52   !! * Substitutions
53#  include "vectopt_loop_substitute.h90"
54   !!----------------------------------------------------------------------
55   !! NEMO/OPA 3.3 , NEMO Consortium (2010)
56   !! $Id: closea.F90 4162 2013-11-07 10:19:49Z cetlod $
57   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
58   !!----------------------------------------------------------------------
59CONTAINS
60
61   SUBROUTINE dom_clo
62      !!---------------------------------------------------------------------
63      !!                  ***  ROUTINE dom_clo  ***
64      !!       
65      !! ** Purpose :   Closed sea domain initialization
66      !!
67      !! ** Method  :   if a closed sea is located only in a model grid point
68      !!                just the thermodynamic processes are applied.
69      !!
70      !! ** Action  :   ncsi1(), ncsj1() : south-west closed sea limits (i,j)
71      !!                ncsi2(), ncsj2() : north-east Closed sea limits (i,j)
72      !!                ncsir(), ncsjr() : Location of runoff
73      !!                ncsnr            : number of point where run-off pours
74      !!                ncstt            : Type of closed sea
75      !!                                   =0 spread over the world ocean
76      !!                                   =2 put at location runoff
77      !!----------------------------------------------------------------------
78      INTEGER ::   jc               ! dummy loop indices
79      REAL(wp)::   ztmp   
80      !!----------------------------------------------------------------------
81     
82      IF(lwp) WRITE(numout,*)
83      IF(lwp) WRITE(numout,*)'dom_clo : closed seas '
84      IF(lwp) WRITE(numout,*)'~~~~~~~'
85
86      ! Initial values
87      ncsnr(:) = 1  ;  ncsi1(:) = 1  ;  ncsi2(:) = 1  ;  ncsir(:,:) = 1
88      ncstt(:) = 0  ;  ncsj1(:) = 1  ;  ncsj2(:) = 1  ;  ncsjr(:,:) = 1
89
90      ! set the closed seas (in data domain indices)
91      ! -------------------
92
93      IF( cp_cfg == "orca" ) THEN
94         !
95         SELECT CASE ( jp_cfg )
96         !                                           ! =======================
97         CASE ( 1 )                                  ! ORCA_R1 configuration
98            !                                        ! =======================
99            ncsnr(1)   = 1    ; ncstt(1)   = 0           ! Caspian Sea
100            ncsi1(1)   = 332  ; ncsj1(1)   = 203           ! spread over the globe
101            ncsi2(1)   = 344  ; ncsj2(1)   = 235
102            ncsir(1,1) = 1    ; ncsjr(1,1) = 1
103            !
104            ncsnr(2)   = 4    ; ncstt(2)   = 2           ! Great North American Lakes
105            ncsi1(2)   = 198  ; ncsj1(2)   = 209           ! put at St Laurent mouth
106            ncsi2(2)   = 213  ; ncsj2(2)   = 223
107            ncsir(1,2) = 225  ; ncsjr(1,2) = 220
108            ncsir(1,2) = 225  ; ncsjr(1,2) = 221
109            ncsir(1,2) = 226  ; ncsjr(1,2) = 220
110            ncsir(1,2) = 226  ; ncsjr(1,2) = 221
111
112            !                                       
113            !                                        ! =======================
114         CASE ( 2 )                                  !  ORCA_R2 configuration
115            !                                        ! =======================
116            !                                            ! Caspian Sea
117            ncsnr(1)   =   1  ;  ncstt(1)   =   0           ! spread over the globe
118            ncsi1(1)   =  11  ;  ncsj1(1)   = 103
119            ncsi2(1)   =  17  ;  ncsj2(1)   = 112
120            ncsir(1,1) =   1  ;  ncsjr(1,1) =   1 
121            !                                            ! Great North American Lakes
122            ncsnr(2)   =   1  ;  ncstt(2)   =   2           ! put at St Laurent mouth
123            ncsi1(2)   =  97  ;  ncsj1(2)   = 107
124            ncsi2(2)   = 103  ;  ncsj2(2)   = 111
125            ncsir(2,1) = 110  ;  ncsjr(2,1) = 111           
126            !                                            ! Black Sea (crossed by the cyclic boundary condition)
127            ncsnr(3:4) =   4  ;  ncstt(3:4) =   2           ! put in Med Sea (north of Aegean Sea)
128            ncsir(3:4,1) = 171;  ncsjr(3:4,1) = 106         !
129            ncsir(3:4,2) = 170;  ncsjr(3:4,2) = 106 
130            ncsir(3:4,3) = 171;  ncsjr(3:4,3) = 105 
131            ncsir(3:4,4) = 170;  ncsjr(3:4,4) = 105 
132            ncsi1(3)   = 174  ;  ncsj1(3)   = 107           ! 1 : west part of the Black Sea     
133            ncsi2(3)   = 181  ;  ncsj2(3)   = 112           !            (ie west of the cyclic b.c.)
134            ncsi1(4)   =   2  ;  ncsj1(4)   = 107           ! 2 : east part of the Black Sea
135            ncsi2(4)   =   6  ;  ncsj2(4)   = 112           !           (ie east of the cyclic b.c.)
136             
137         
138
139            !                                        ! =======================
140         CASE ( 4 )                                  !  ORCA_R4 configuration
141            !                                        ! =======================
142            !                                            ! Caspian Sea
143            ncsnr(1)   =  1  ;  ncstt(1)   =  0 
144            ncsi1(1)   =  4  ;  ncsj1(1)   = 53 
145            ncsi2(1)   =  4  ;  ncsj2(1)   = 56
146            ncsir(1,1) =  1  ;  ncsjr(1,1) =  1
147            !                                            ! Great North American Lakes
148            ncsnr(2)   =  1  ;  ncstt(2)   =  2 
149            ncsi1(2)   = 49  ;  ncsj1(2)   = 55
150            ncsi2(2)   = 51  ;  ncsj2(2)   = 56
151            ncsir(2,1) = 57  ;  ncsjr(2,1) = 55
152            !                                            ! Black Sea
153            ncsnr(3)   =  4  ;  ncstt(3)   =  2 
154            ncsi1(3)   = 88  ;  ncsj1(3)   = 55 
155            ncsi2(3)   = 91  ;  ncsj2(3)   = 56
156            ncsir(3,1) = 86  ;  ncsjr(3,1) = 53
157            ncsir(3,2) = 87  ;  ncsjr(3,2) = 53 
158            ncsir(3,3) = 86  ;  ncsjr(3,3) = 52 
159            ncsir(3,4) = 87  ;  ncsjr(3,4) = 52
160            !                                            ! Baltic Sea
161            ncsnr(4)   =  1  ;  ncstt(4)   =  2
162            ncsi1(4)   = 75  ;  ncsj1(4)   = 59
163            ncsi2(4)   = 76  ;  ncsj2(4)   = 61
164            ncsir(4,1) = 84  ;  ncsjr(4,1) = 59 
165            !                                        ! =======================
166         CASE ( 025 )                                ! ORCA_R025 configuration
167            !                                        ! =======================
168            ncsnr(1)   = 1    ; ncstt(1)   = 0               ! Caspian + Aral sea
169            ncsi1(1)   = 1330 ; ncsj1(1)   = 645
170            ncsi2(1)   = 1400 ; ncsj2(1)   = 795
171            ncsir(1,1) = 1    ; ncsjr(1,1) = 1
172            !                                       
173            ncsnr(2)   = 1    ; ncstt(2)   = 0               ! Azov Sea
174            ncsi1(2)   = 1284 ; ncsj1(2)   = 722
175            ncsi2(2)   = 1304 ; ncsj2(2)   = 747
176            ncsir(2,1) = 1    ; ncsjr(2,1) = 1
177            !
178         END SELECT
179         !
180      ENDIF
181
182      ! convert the position in local domain indices
183      ! --------------------------------------------
184      DO jc = 1, jpncs
185         ncsi1(jc)   = mi0( ncsi1(jc) )
186         ncsj1(jc)   = mj0( ncsj1(jc) )
187
188         ncsi2(jc)   = mi1( ncsi2(jc) )   
189         ncsj2(jc)   = mj1( ncsj2(jc) ) 
190      END DO
191
192      !
193   END SUBROUTINE dom_clo
194
195
196   SUBROUTINE sbc_clo( kt )
197      !!---------------------------------------------------------------------
198      !!                  ***  ROUTINE sbc_clo  ***
199      !!                   
200      !! ** Purpose :   Special handling of closed seas
201      !!
202      !! ** Method  :   Water flux is forced to zero over closed sea
203      !!      Excess is shared between remaining ocean, or
204      !!      put as run-off in open ocean.
205      !!
206      !! ** Action  :   emp updated surface freshwater fluxes and associated heat content at kt
207      !!----------------------------------------------------------------------
208      INTEGER, INTENT(in) ::   kt   ! ocean model time step
209      !
210      INTEGER             ::   ji, jj, jc, jn   ! dummy loop indices
211      REAL(wp), PARAMETER ::   rsmall = 1.e-20_wp    ! Closed sea correction epsilon
212      REAL(wp)            ::   zze2, ztmp, zcorr     !
213      REAL(wp)            ::   zcoef, zcoef1         !
214      COMPLEX(wp)         ::   ctmp 
215      REAL(wp), DIMENSION(jpncs) ::   zfwf   ! 1D workspace
216      !!----------------------------------------------------------------------
217      !
218      IF( nn_timing == 1 )  CALL timing_start('sbc_clo')
219      !                                                   !------------------!
220      IF( kt == nit000 ) THEN                             !  Initialisation  !
221         !                                                !------------------!
222         IF(lwp) WRITE(numout,*)
223         IF(lwp) WRITE(numout,*)'sbc_clo : closed seas '
224         IF(lwp) WRITE(numout,*)'~~~~~~~'
225         !
226         ! Mask
227         ! --------------------------------------------
228         ALLOCATE ( clo_mask (jpi, jpj), STAT=dia_closea_alloc)
229         IF(dia_closea_alloc /= 0)   CALL ctl_warn('dia_closea_alloc: failed to allocate arrays.')
230         
231         clo_mask (:,:) = tmask (:,:,1)
232         
233         ! Latitude limits
234         WHERE ( gphit (:,:) .GT.  30.0_wp ) clo_mask (:,:) = 0.0_wp
235         WHERE ( gphit (:,:) .LT. -30.0_wp ) clo_mask (:,:) = 0.0_wp
236         !
237         ! Remove closed seas from mask
238         DO jc = 1, jpncs
239            DO jj = ncsj1(jc), ncsj2(jc)
240               DO ji = ncsi1(jc), ncsi2(jc)
241                  clo_mask (ji, jj) = 0.0_wp
242               END DO
243            END DO
244         END DO
245         
246         IF( lk_mpp ) CALL lbc_lnk ( clo_mask, 'T', 1._wp)
247     
248         !
249         surf(:) = 0.e0_wp
250         !
251         surf(jpncs+1) = glob_sum( e1e2t(:,:) * clo_mask (:,:) )   ! surface of the ocean where excess run-off goes
252         !
253         !                                        ! surface of closed seas
254         IF( lk_mpp_rep ) THEN                         ! MPP reproductible calculation
255            DO jc = 1, jpncs
256               ctmp = CMPLX( 0.e0, 0.e0, wp )
257               DO jj = ncsj1(jc), ncsj2(jc)
258                  DO ji = ncsi1(jc), ncsi2(jc)
259                     ztmp = e1e2t(ji,jj) * tmask_i(ji,jj)
260                     CALL DDPDD( CMPLX( ztmp, 0.e0, wp ), ctmp )
261                  END DO
262               END DO
263               IF( lk_mpp )   CALL mpp_sum( ctmp )
264               surf(jc) = REAL(ctmp,wp)
265            END DO
266         ELSE                                          ! Standard calculation           
267            DO jc = 1, jpncs
268               DO jj = ncsj1(jc), ncsj2(jc)
269                  DO ji = ncsi1(jc), ncsi2(jc)
270                     surf(jc) = surf(jc) + e1e2t(ji,jj) * tmask_i(ji,jj)      ! surface of closed seas
271                  END DO
272               END DO
273            END DO
274            IF( lk_mpp )   CALL mpp_sum ( surf, jpncs )       ! mpp: sum over all the global domain
275         ENDIF
276
277         IF(lwp) WRITE(numout,*)'     Closed sea surfaces'
278         DO jc = 1, jpncs
279            IF(lwp)WRITE(numout,FMT='(1I3,4I4,5X,F16.2)') jc, ncsi1(jc), ncsi2(jc), ncsj1(jc), ncsj2(jc), surf(jc)
280         END DO
281
282         IF(lwp) WRITE(numout,*)'     Surface for redistribution in closea ', surf(jpncs+1)
283         
284         !
285      ENDIF
286      !
287      !                                                   !--------------------!
288      !                                                   !  update emp        !
289      zfwf = 0.e0_wp                                      !--------------------!
290      IF( lk_mpp_rep ) THEN                         ! MPP reproductible calculation
291         DO jc = 1, jpncs
292            ctmp = CMPLX( 0.e0, 0.e0, wp )
293            DO jj = ncsj1(jc), ncsj2(jc)
294               DO ji = ncsi1(jc), ncsi2(jc)
295                  ztmp = e1e2t(ji,jj) * ( emp(ji,jj)-rnf(ji,jj) ) * tmask_i(ji,jj)
296                  CALL DDPDD( CMPLX( ztmp, 0.e0, wp ), ctmp )
297               END DO 
298            END DO
299            IF( lk_mpp )   CALL mpp_sum( ctmp )
300            zfwf(jc) = REAL(ctmp,wp)
301         END DO
302      ELSE                                          ! Standard calculation           
303         DO jc = 1, jpncs
304            DO jj = ncsj1(jc), ncsj2(jc)
305               DO ji = ncsi1(jc), ncsi2(jc)
306                  zfwf(jc) = zfwf(jc) + e1e2t(ji,jj) * ( emp(ji,jj)-rnf(ji,jj) ) * tmask_i(ji,jj) 
307               END DO 
308            END DO
309         END DO
310         IF( lk_mpp )   CALL mpp_sum ( zfwf(:) , jpncs )       ! mpp: sum over all the global domain
311      ENDIF
312
313      IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN      ! Black Sea case for ORCA_R2 configuration
314         zze2    = ( zfwf(3) + zfwf(4) ) * 0.5_wp
315         zfwf(3) = zze2
316         zfwf(4) = zze2
317      ENDIF
318
319      zcorr = 0._wp
320
321      DO jc = 1, jpncs
322         !
323         ! The following if avoids the redistribution of the round off
324         IF ( ABS(zfwf(jc) / surf(jpncs+1) ) > rsmall) THEN
325            !
326            IF( ncstt(jc) == 0 ) THEN           ! water/evap excess is shared by all open ocean
327               zcoef    = zfwf(jc) / surf(jpncs+1)
328               zcoef1   = rcp * zcoef
329               emp(:,:) = emp(:,:) + zcoef  * clo_mask (:,:) 
330               qns(:,:) = qns(:,:) - zcoef1 * sst_m(:,:) * clo_mask (:,:)
331               !
332            ELSEIF( ncstt(jc) == 1 ) THEN       ! Excess water in open sea, at outflow location, excess evap shared
333               IF ( zfwf(jc) <= 0.e0_wp ) THEN
334                   DO jn = 1, ncsnr(jc)
335                     ji = mi0(ncsir(jc,jn))
336                     jj = mj0(ncsjr(jc,jn)) ! Location of outflow in open ocean
337                     IF (      ji > 1 .AND. ji < jpi   &
338                         .AND. jj > 1 .AND. jj < jpj ) THEN
339                         zcoef      = zfwf(jc) / ( REAL(ncsnr(jc)) * e1e2t(ji,jj) )
340                         zcoef1     = rcp * zcoef
341                         emp(ji,jj) = emp(ji,jj) + zcoef 
342                         qns(ji,jj) = qns(ji,jj) - zcoef1 * sst_m(ji,jj)
343                     ENDIF
344                   END DO
345               ELSE
346                   zcoef    = zfwf(jc) / surf(jpncs+1)
347                   zcoef1   = rcp * zcoef
348                   emp(:,:) = emp(:,:) + zcoef  * clo_mask (:,:)
349                   qns(:,:) = qns(:,:) - zcoef1 * sst_m(:,:) * clo_mask (:,:)
350               ENDIF
351            ELSEIF( ncstt(jc) == 2 ) THEN       ! Excess e-p-r (either sign) goes to open ocean, at outflow location
352               DO jn = 1, ncsnr(jc)
353                  ji = mi0(ncsir(jc,jn))
354                  jj = mj0(ncsjr(jc,jn)) ! Location of outflow in open ocean
355                  IF(      ji > 1 .AND. ji < jpi    &
356                     .AND. jj > 1 .AND. jj < jpj ) THEN
357                     zcoef      = zfwf(jc) / ( REAL(ncsnr(jc)) *  e1e2t(ji,jj) )
358                     zcoef1     = rcp * zcoef
359                     emp(ji,jj) = emp(ji,jj) + zcoef
360                     qns(ji,jj) = qns(ji,jj) - zcoef1 * sst_m(ji,jj)
361                  ENDIF
362               END DO
363            ENDIF 
364            !
365            DO jj = ncsj1(jc), ncsj2(jc)
366               DO ji = ncsi1(jc), ncsi2(jc)
367                  zcoef      = zfwf(jc) / surf(jc)
368                  zcoef1     = rcp * zcoef
369                  emp(ji,jj) = emp(ji,jj) - zcoef
370                  qns(ji,jj) = qns(ji,jj) + zcoef1 * sst_m(ji,jj)
371               END DO 
372            END DO 
373            !
374         END IF
375      END DO
376
377      emp (:,:) = emp (:,:) * tmask(:,:,1)
378      qns (:,:) = qns (:,:) * tmask(:,:,1)
379      !
380      CALL lbc_lnk( emp , 'T', 1._wp )
381      CALL lbc_lnk( qns , 'T', 1._wp )
382      !
383      IF( nn_timing == 1 )  CALL timing_stop('sbc_clo')
384      !
385   END SUBROUTINE sbc_clo
386
387
388   SUBROUTINE clo_rnf( p_rnfmsk )
389      !!---------------------------------------------------------------------
390      !!                  ***  ROUTINE sbc_rnf  ***
391      !!                   
392      !! ** Purpose :   allow the treatment of closed sea outflow grid-points
393      !!                to be the same as river mouth grid-points
394      !!
395      !! ** Method  :   set to 1 the runoff mask (mskrnf, see sbcrnf module)
396      !!                at the closed sea outflow grid-point.
397      !!
398      !! ** Action  :   update (p_)mskrnf (set 1 at closed sea outflow)
399      !!----------------------------------------------------------------------
400      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   p_rnfmsk   ! river runoff mask (rnfmsk array)
401      !
402      INTEGER  ::   jc, jn, ji, jj      ! dummy loop indices
403      !!----------------------------------------------------------------------
404      !
405      DO jc = 1, jpncs
406         IF( ncstt(jc) >= 1 ) THEN            ! runoff mask set to 1 at closed sea outflows
407             DO jn = 1, 4
408                DO jj =    mj0( ncsjr(jc,jn) ), mj1( ncsjr(jc,jn) )
409                   DO ji = mi0( ncsir(jc,jn) ), mi1( ncsir(jc,jn) )
410                      p_rnfmsk(ji,jj) = MAX( p_rnfmsk(ji,jj), 1.0_wp )
411                   END DO
412                END DO
413            END DO
414         ENDIF
415      END DO 
416      !
417   END SUBROUTINE clo_rnf
418
419   
420   SUBROUTINE clo_ups( p_upsmsk )
421      !!---------------------------------------------------------------------
422      !!                  ***  ROUTINE sbc_rnf  ***
423      !!                   
424      !! ** Purpose :   allow the treatment of closed sea outflow grid-points
425      !!                to be the same as river mouth grid-points
426      !!
427      !! ** Method  :   set to 0.5 the upstream mask (upsmsk, see traadv_cen2
428      !!                module) over the closed seas.
429      !!
430      !! ** Action  :   update (p_)upsmsk (set 0.5 over closed seas)
431      !!----------------------------------------------------------------------
432      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   p_upsmsk   ! upstream mask (upsmsk array)
433      !
434      INTEGER  ::   jc, ji, jj      ! dummy loop indices
435      !!----------------------------------------------------------------------
436      !
437      DO jc = 1, jpncs
438         DO jj = ncsj1(jc), ncsj2(jc)
439            DO ji = ncsi1(jc), ncsi2(jc)
440               p_upsmsk(ji,jj) = 0.5_wp         ! mixed upstream/centered scheme over closed seas
441            END DO
442         END DO
443       END DO 
444       !
445   END SUBROUTINE clo_ups
446   
447     
448   SUBROUTINE clo_bat( pbat, kbat )
449      !!---------------------------------------------------------------------
450      !!                  ***  ROUTINE clo_bat  ***
451      !!                   
452      !! ** Purpose :   suppress closed sea from the domain
453      !!
454      !! ** Method  :   set to 0 the meter and level bathymetry (given in
455      !!                arguments) over the closed seas.
456      !!
457      !! ** Action  :   set pbat=0 and kbat=0 over closed seas
458      !!----------------------------------------------------------------------
459      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   pbat   ! bathymetry in meters (bathy array)
460      INTEGER , DIMENSION(jpi,jpj), INTENT(inout) ::   kbat   ! bathymetry in levels (mbathy array)
461      !
462      INTEGER  ::   jc, ji, jj      ! dummy loop indices
463      !!----------------------------------------------------------------------
464      !
465      DO jc = 1, jpncs
466         DO jj = ncsj1(jc), ncsj2(jc)
467            DO ji = ncsi1(jc), ncsi2(jc)
468               pbat(ji,jj) = 0._wp   
469               kbat(ji,jj) = 0   
470            END DO
471         END DO
472       END DO 
473       !
474   END SUBROUTINE clo_bat
475
476   !!======================================================================
477END MODULE closea
478
Note: See TracBrowser for help on using the repository browser.