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.
closea.F90 in branches/2015/dev_r5803_NOC_WAD/NEMOGCM/NEMO/OPA_SRC/DOM – NEMO

source: branches/2015/dev_r5803_NOC_WAD/NEMOGCM/NEMO/OPA_SRC/DOM/closea.F90 @ 5870

Last change on this file since 5870 was 5870, checked in by acc, 8 years ago

Branch 2015/dev_r5803_NOC_WAD. Merge in trunk changes from 5803 to 5869 in preparation for merge. Also tidied and reorganised some wetting and drying code. Renamed wadlmt.F90 to wetdry.F90. Wetting drying code changes restricted to domzgr.F90, domvvl.F90 nemogcm.F90 sshwzv.F90, dynspg_ts.F90, wetdry.F90 and dynhpg.F90. Code passes full SETTE tests with ln_wd=.false.. Still awaiting test case for checking with ln_wd=.false.

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