source: branches/UKMO/dev_isf_divg_corr_GO6_package_r9385/NEMOGCM/NEMO/OPA_SRC/DOM/iscplrst.F90 @ 9813

Last change on this file since 9813 was 9813, checked in by antsia, 2 years ago

delete iscplhsb, add iscpldiv and make the code readable

File size: 18.4 KB
Line 
1MODULE iscplrst
2   !!======================================================================
3   !!                       ***  MODULE  iscplrst***
4   !! Ocean forcing: update the restart file in case of ice sheet/ocean coupling
5   !!=====================================================================
6   !! History :  NEMO  ! 2015-01 P. Mathiot: original
7   !!----------------------------------------------------------------------
8
9   !!----------------------------------------------------------------------
10   !!   iscpl_stp          : step management
11   !!   iscpl_rst_interpol : restart interpolation in case of coupling with ice sheet
12   !!----------------------------------------------------------------------
13   USE dom_oce         ! ocean space and time domain
14   USE domwri          ! ocean space and time domain
15   USE domvvl, ONLY : dom_vvl_interpol
16   USE phycst          ! physical constants
17   USE sbc_oce         ! surface boundary condition variables
18   USE oce             ! global tra/dyn variable
19   USE in_out_manager  ! I/O manager
20   USE iom             ! I/O module
21   USE lib_mpp         ! MPP library
22   USE lib_fortran     ! MPP library
23   USE wrk_nemo        ! Memory allocation
24   USE lbclnk          ! communication
25   USE iscplini        ! ice sheet coupling: initialisation
26   !USE iscplhsb        ! ice sheet coupling: conservation
27   USE iscpldiv
28
29   IMPLICIT NONE
30   PRIVATE
31   
32   PUBLIC   iscpl_stp          ! step management
33   !!
34   !! * Substitutions 
35#  include "domzgr_substitute.h90" 
36#  include "vectopt_loop_substitute.h90"
37   !!----------------------------------------------------------------------
38   !! NEMO/OPA 3.3 , NEMO Consortium (2010)
39   !! $Id: sbcrnf.F90 4666 2014-06-11 12:52:23Z mathiot $
40   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
41   !!----------------------------------------------------------------------
42CONTAINS
43
44   SUBROUTINE iscpl_stp
45      !!----------------------------------------------------------------------
46      !!                   ***  ROUTINE iscpl_stp  ***
47      !!
48      !! ** Purpose : compute initialisation
49      !!              compute extrapolation of restart variable un, vn, tsn, sshn (wetting/drying)   
50      !!              compute correction term if needed
51      !!
52      !!----------------------------------------------------------------------
53      INTEGER  ::   inum0
54      REAL(wp), DIMENSION(:,:  ), POINTER :: zsmask_b
55      REAL(wp), DIMENSION(:,:,:), POINTER :: ztmask_b, zumask_b, zvmask_b
56      REAL(wp), DIMENSION(:,:,:), POINTER :: ze3t_b  , ze3u_b  , ze3v_b 
57      REAL(wp), DIMENSION(:,:,:), POINTER :: zdepw_b
58      CHARACTER(20) :: cfile
59      !!----------------------------------------------------------------------
60
61      CALL wrk_alloc(jpi,jpj,jpk, ztmask_b, zumask_b, zvmask_b) ! mask before
62      CALL wrk_alloc(jpi,jpj,jpk, ze3t_b  , ze3u_b  , ze3v_b  ) ! e3   before
63      CALL wrk_alloc(jpi,jpj,jpk, zdepw_b )
64      CALL wrk_alloc(jpi,jpj,     zsmask_b                    )
65
66
67      !! get restart variable
68      CALL iom_get( numror, jpdom_autoglo, 'tmask'  , ztmask_b   ) ! need to extrapolate T/S
69      CALL iom_get( numror, jpdom_autoglo, 'umask'  , zumask_b   ) ! need to correct barotropic velocity
70      CALL iom_get( numror, jpdom_autoglo, 'vmask'  , zvmask_b   ) ! need to correct barotropic velocity
71      CALL iom_get( numror, jpdom_autoglo, 'smask'  , zsmask_b   ) ! need to correct barotropic velocity
72      CALL iom_get( numror, jpdom_autoglo, 'fse3t_n' , ze3t_b(:,:,:) )  ! need to compute temperature correction
73      CALL iom_get( numror, jpdom_autoglo, 'fse3u_n' , ze3u_b(:,:,:) )  ! need to correct barotropic velocity
74      CALL iom_get( numror, jpdom_autoglo, 'fse3v_n' , ze3v_b(:,:,:) )  ! need to correct barotropic velocity
75      CALL iom_get( numror, jpdom_autoglo, 'fsdepw_n', zdepw_b(:,:,:) ) ! need to interpol vertical profile (vvl)
76
77      !! read namelist
78      CALL iscpl_init()
79
80      !!  ! Extrapolation/interpolation of modify cell and new cells ... (maybe do it later after domvvl)
81      CALL iscpl_rst_interpol( ztmask_b, zumask_b, zvmask_b, zsmask_b, ze3t_b, ze3u_b, ze3v_b, zdepw_b )
82
83      !! print mesh/mask
84      IF( nmsh /= 0 .AND. ln_iscpl )   CALL dom_wri      ! Create a domain file
85
86      CALL wrk_dealloc(jpi,jpj,jpk, ztmask_b,zumask_b,zvmask_b ) 
87      CALL wrk_dealloc(jpi,jpj,jpk, ze3t_b  ,ze3u_b  ,ze3v_b   ) 
88      CALL wrk_dealloc(jpi,jpj,jpk, zdepw_b                    )
89      CALL wrk_dealloc(jpi,jpj,     zsmask_b                   )
90
91      !! next step is an euler time step
92      neuler = 0
93
94      !! set _b and _n variables equal
95      tsb (:,:,:,:) = tsn (:,:,:,:)
96      ub  (:,:,:  ) = un  (:,:,:  )
97      vb  (:,:,:  ) = vn  (:,:,:  )
98      sshb(:,:    ) = sshn(:,:)
99
100      !! set _b and _n vertical scale factor equal
101      fse3t_b (:,:,:) = fse3t_n (:,:,:)
102      fse3u_b (:,:,:) = fse3u_n (:,:,:)
103      fse3v_b (:,:,:) = fse3v_n (:,:,:)
104
105      IF ( lk_vvl ) THEN
106         fse3uw_b(:,:,:) = fse3uw_n(:,:,:)
107         fse3vw_b(:,:,:) = fse3vw_n(:,:,:)
108         fsdept_b(:,:,:) = fsdept_n(:,:,:)
109         fsdepw_b(:,:,:) = fsdepw_n(:,:,:)
110         hu_b (:,:) = hu(:,:)
111         hv_b (:,:) = hv(:,:)
112         hur_b(:,:) = hur(:,:)
113         hvr_b(:,:) = hvr(:,:)
114      END IF
115      !
116   END SUBROUTINE iscpl_stp
117   
118   SUBROUTINE iscpl_rst_interpol (ptmask_b, pumask_b, pvmask_b, psmask_b, pe3t_b, pe3u_b, pe3v_b, pdepw_b)
119      !!----------------------------------------------------------------------
120      !!                   ***  ROUTINE iscpl_rst_interpol  ***
121      !!
122      !! ** Purpose :   compute new tn, sn, un, vn and sshn in case of evolving geometry of ice shelves
123      !!                compute 2d fields of heat, salt and volume correction
124      !!
125      !! ** Method  :   tn, sn : extrapolation from neigbourg cells
126      !!                un, vn : fill with 0 velocity and keep barotropic transport by modifing surface velocity or adjacent velocity
127      !!----------------------------------------------------------------------
128      REAL(wp), DIMENSION(:,:,:  ), INTENT(in ) :: ptmask_b, pumask_b, pvmask_b    !! mask before
129      REAL(wp), DIMENSION(:,:,:  ), INTENT(in ) :: pe3t_b  , pe3u_b  , pe3v_b      !! scale factor before
130      REAL(wp), DIMENSION(:,:,:  ), INTENT(in ) :: pdepw_b                         !! depth w before
131      REAL(wp), DIMENSION(:,:    ), INTENT(in ) :: psmask_b                        !! mask before
132      !!
133      INTEGER :: ji, jj, jk, iz          !! loop index
134      INTEGER :: jip1, jim1, jjp1, jjm1, jkp1, jkm1, jtop
135      !!
136      REAL(wp):: summsk, zsum, zsum1, zarea, zsumn, zsumb, zhdivdiff, zfp_ui, zfm_ui, zfp_vi, zfm_vi
137      REAL(wp):: zdz, zdzm1, zdzp1, zvol, zuflux_sum, zvflux_sum
138      REAL(wp),DIMENSION(2)::ztrdtsb
139      !!
140      REAL(wp), DIMENSION(:,:    ), POINTER :: zdmask , zdsmask, zvcorr, zucorr, zde3t
141      REAL(wp), DIMENSION(:,:    ), POINTER :: zbub   , zbvb   , zbun  , zbvn
142      REAL(wp), DIMENSION(:,:    ), POINTER :: zssh0  , zssh1, zhu1, zhv1
143      REAL(wp), DIMENSION(:,:    ), POINTER :: zsmask0, zsmask1, isfmask
144      REAL(wp), DIMENSION(:,:,:  ), POINTER :: ztmask0, ztmask1, ztrp, zuflux, zvflux, zhdiv, zhdiv2
145      REAL(wp), DIMENSION(:,:,:  ), POINTER :: zwmaskn, zwmaskb, ztmp3d
146      REAL(wp), DIMENSION(:,:,:,:), POINTER :: zts0
147      !!----------------------------------------------------------------------
148
149      !! allocate variables
150      CALL wrk_alloc(jpi,jpj,jpk,2, zts0                                   )
151      CALL wrk_alloc(jpi,jpj,jpk,   ztmask0, ztmask1 , ztrp, ztmp3d        ) 
152      CALL wrk_alloc(jpi,jpj,jpk,   zwmaskn, zwmaskb, zuflux, zvflux, zhdiv, zhdiv2               ) 
153      CALL wrk_alloc(jpi,jpj,       zsmask0, zsmask1, isfmask                       ) 
154      CALL wrk_alloc(jpi,jpj,       zdmask , zdsmask, zvcorr, zucorr, zde3t) 
155      CALL wrk_alloc(jpi,jpj,       zbub   , zbvb    , zbun , zbvn         ) 
156      CALL wrk_alloc(jpi,jpj,       zssh0  , zssh1, zhu1, zhv1             ) 
157
158      !! mask value to be sure
159      tsn(:,:,:,jp_tem) = tsn(:,:,:,jp_tem) * ptmask_b(:,:,:)
160      tsn(:,:,:,jp_sal) = tsn(:,:,:,jp_sal) * ptmask_b(:,:,:)
161     
162      ! compute wmask
163      zwmaskn(:,:,1) = tmask   (:,:,1)
164      zwmaskb(:,:,1) = ptmask_b(:,:,1)
165      DO jk = 2,jpk
166         zwmaskn(:,:,jk) =  tmask  (:,:,jk) *  tmask  (:,:,jk-1)
167         zwmaskb(:,:,jk) = ptmask_b(:,:,jk) * ptmask_b(:,:,jk-1)
168      END DO
169           
170      ! compute new ssh if we open a full water column (average of the closest neigbourgs) 
171      sshb (:,:)=sshn(:,:)
172      zssh0(:,:)=sshn(:,:)
173      zsmask0(:,:) = psmask_b(:,:)
174      zsmask1(:,:) = psmask_b(:,:)
175      DO iz = 1,nn_drown    ! need to be tuned (configuration dependent) (OK for ISOMIP+)
176         zdsmask(:,:) = ssmask(:,:)-zsmask0(:,:)
177         DO jj = 2,jpj-1
178            DO ji = fs_2, fs_jpim1   ! vector opt.
179               jip1=ji+1; jim1=ji-1;
180               jjp1=jj+1; jjm1=jj-1;
181               summsk=(zsmask0(jip1,jj)+zsmask0(jim1,jj)+zsmask0(ji,jjp1)+zsmask0(ji,jjm1))
182               IF (zdsmask(ji,jj) == 1._wp .AND. summsk /= 0._wp) THEN
183                  sshn(ji,jj)=( zssh0(jip1,jj)*zsmask0(jip1,jj)     &
184                  &           + zssh0(jim1,jj)*zsmask0(jim1,jj)     &
185                  &           + zssh0(ji,jjp1)*zsmask0(ji,jjp1)     &
186                  &           + zssh0(ji,jjm1)*zsmask0(ji,jjm1))/summsk
187                  zsmask1(ji,jj)=1._wp
188               END IF
189            END DO
190         END DO
191         CALL lbc_lnk(sshn,'T',1._wp)
192         CALL lbc_lnk(zsmask1,'T',1._wp)
193         zssh0   = sshn
194         zsmask0 = zsmask1
195      END DO
196      sshn(:,:) = sshn(:,:) * ssmask(:,:)
197
198!=============================================================================
199      IF ( lk_vvl ) THEN
200      ! Reconstruction of all vertical scale factors at now time steps
201      ! =============================================================================
202      ! Horizontal scale factor interpolations
203      ! --------------------------------------
204         DO jk = 1,jpk
205            DO jj=1,jpj
206               DO ji=1,jpi
207                  IF (tmask(ji,jj,1) == 0._wp .OR. ptmask_b(ji,jj,1) == 0._wp) THEN
208                     fse3t_n(ji,jj,jk) = e3t_0(ji,jj,jk) * ( 1._wp + sshn(ji,jj) / ( ht_0(ji,jj) + 1._wp - ssmask(ji,jj) ) * tmask(ji,jj,jk) )
209                  ENDIF
210               END DO
211            END DO
212         END DO
213
214         CALL dom_vvl_interpol( fse3t_n(:,:,:), fse3u_n(:,:,:), 'U' )
215         CALL dom_vvl_interpol( fse3t_n(:,:,:), fse3v_n(:,:,:), 'V' )
216         CALL dom_vvl_interpol( fse3u_n(:,:,:), fse3f_n(:,:,:), 'F' )
217
218      ! Vertical scale factor interpolations
219      ! ------------------------------------
220         CALL dom_vvl_interpol( fse3t_n(:,:,:), fse3w_n (:,:,:), 'W'  )
221         CALL dom_vvl_interpol( fse3u_n(:,:,:), fse3uw_n(:,:,:), 'UW' )
222         CALL dom_vvl_interpol( fse3v_n(:,:,:), fse3vw_n(:,:,:), 'VW' )
223
224      ! t- and w- points depth
225      ! ----------------------
226         fsdept_n(:,:,1) = 0.5_wp * fse3w_n(:,:,1)
227         fsdepw_n(:,:,1) = 0.0_wp
228         fsde3w_n(:,:,1) = fsdept_n(:,:,1) - sshn(:,:)
229         DO jj = 1,jpj
230            DO ji = 1,jpi
231               DO jk = 2,mikt(ji,jj)-1
232                  fsdept_n(ji,jj,jk) = gdept_0(ji,jj,jk)
233                  fsdepw_n(ji,jj,jk) = gdepw_0(ji,jj,jk)
234                  fsde3w_n(ji,jj,jk) = gdept_0(ji,jj,jk) - sshn(ji,jj)
235               END DO
236               IF (mikt(ji,jj) > 1) THEN
237                  jk = mikt(ji,jj)
238                  fsdept_n(ji,jj,jk) = gdepw_0(ji,jj,jk) + 0.5_wp * fse3w_n(ji,jj,jk)
239                  fsdepw_n(ji,jj,jk) = gdepw_0(ji,jj,jk)
240                  fsde3w_n(ji,jj,jk) = fsdept_n(ji,jj,jk  ) - sshn   (ji,jj)
241               END IF
242               DO jk = mikt(ji,jj)+1, jpk
243                  fsdept_n(ji,jj,jk) = fsdept_n(ji,jj,jk-1) + fse3w_n(ji,jj,jk)
244                  fsdepw_n(ji,jj,jk) = fsdepw_n(ji,jj,jk-1) + fse3t_n(ji,jj,jk-1)
245                  fsde3w_n(ji,jj,jk) = fsdept_n(ji,jj,jk  ) - sshn   (ji,jj)
246               END DO
247            END DO
248         END DO
249
250      ! t-, u- and v- water column thickness
251      ! ------------------------------------
252         ht(:,:) = 0._wp ; hu(:,:) = 0._wp ; hv(:,:) = 0._wp
253         DO jk = 1, jpkm1
254            hu(:,:) = hu(:,:) + fse3u_n(:,:,jk) * umask(:,:,jk)
255            hv(:,:) = hv(:,:) + fse3v_n(:,:,jk) * vmask(:,:,jk)
256            ht(:,:) = ht(:,:) + fse3t_n(:,:,jk) * tmask(:,:,jk)
257         END DO
258         !                                        ! Inverse of the local depth
259         hur(:,:) = 1._wp / ( hu(:,:) + 1._wp - umask_i(:,:) ) * umask_i(:,:)
260         hvr(:,:) = 1._wp / ( hv(:,:) + 1._wp - vmask_i(:,:) ) * vmask_i(:,:)
261
262      END IF
263
264      !----compute and save the divergence difference (before and after remeshing)
265      CALL iscpl_div_corr(ptmask_b, pe3t_b, pe3u_b, pe3v_b)
266
267      ! compute temp and salt
268      ! compute new tn and sn if we open a new cell
269      tsb (:,:,:,:) = tsn(:,:,:,:)
270      zts0(:,:,:,:) = tsn(:,:,:,:)
271      ztmask1(:,:,:) = ptmask_b(:,:,:)
272      ztmask0(:,:,:) = ptmask_b(:,:,:)
273      DO iz = 1,nn_drown ! resolution dependent (OK for ISOMIP+ case)
274          DO jk = 1,jpk-1
275              zdmask=tmask(:,:,jk)-ztmask0(:,:,jk);
276              DO jj = 2,jpj-1
277                 DO ji = fs_2,fs_jpim1
278                      jip1=ji+1; jim1=ji-1;
279                      jjp1=jj+1; jjm1=jj-1;
280                      summsk= (ztmask0(jip1,jj  ,jk)+ztmask0(jim1,jj  ,jk)+ztmask0(ji  ,jjp1,jk)+ztmask0(ji  ,jjm1,jk))
281                      IF (zdmask(ji,jj) == 1._wp .AND. summsk /= 0._wp) THEN
282                      !! horizontal basic extrapolation
283                         tsn(ji,jj,jk,1)=( zts0(jip1,jj  ,jk,1)*ztmask0(jip1,jj  ,jk) &
284                         &                +zts0(jim1,jj  ,jk,1)*ztmask0(jim1,jj  ,jk) &
285                         &                +zts0(ji  ,jjp1,jk,1)*ztmask0(ji  ,jjp1,jk) &
286                         &                +zts0(ji  ,jjm1,jk,1)*ztmask0(ji  ,jjm1,jk) ) / summsk
287                         tsn(ji,jj,jk,2)=( zts0(jip1,jj  ,jk,2)*ztmask0(jip1,jj  ,jk) &
288                         &                +zts0(jim1,jj  ,jk,2)*ztmask0(jim1,jj  ,jk) &
289                         &                +zts0(ji  ,jjp1,jk,2)*ztmask0(ji  ,jjp1,jk) &
290                         &                +zts0(ji  ,jjm1,jk,2)*ztmask0(ji  ,jjm1,jk) ) / summsk
291                         ztmask1(ji,jj,jk)=1
292                      ELSEIF (zdmask(ji,jj) == 1._wp .AND. summsk == 0._wp) THEN
293                      !! vertical extrapolation if horizontal extrapolation failed
294                         jkm1=max(1,jk-1) ; jkp1=min(jpk,jk+1)
295                         summsk=(ztmask0(ji,jj,jkm1)+ztmask0(ji,jj,jkp1))
296                         IF (zdmask(ji,jj) == 1._wp .AND. summsk /= 0._wp ) THEN
297                            tsn(ji,jj,jk,1)=( zts0(ji,jj,jkp1,1)*ztmask0(ji,jj,jkp1)     &
298                            &                +zts0(ji,jj,jkm1,1)*ztmask0(ji,jj,jkm1))/summsk
299                            tsn(ji,jj,jk,2)=( zts0(ji,jj,jkp1,2)*ztmask0(ji,jj,jkp1)     &
300                            &                +zts0(ji,jj,jkm1,2)*ztmask0(ji,jj,jkm1))/summsk
301                            ztmask1(ji,jj,jk)=1._wp
302                         END IF
303                      END IF
304                  END DO
305              END DO
306          END DO
307         
308          CALL lbc_lnk(tsn(:,:,:,1),'T',1._wp)
309          CALL lbc_lnk(tsn(:,:,:,2),'T',1._wp)
310          CALL lbc_lnk(ztmask1,     'T',1._wp)
311
312          ! update
313          zts0(:,:,:,:) = tsn(:,:,:,:)
314          ztmask0 = ztmask1
315
316      END DO
317
318      ! mask new tsn field
319      tsn(:,:,:,jp_tem) = tsn(:,:,:,jp_tem) * tmask(:,:,:)
320      tsn(:,:,:,jp_sal) = tsn(:,:,:,jp_sal) * tmask(:,:,:)
321
322      ! compute new T/S (interpolation) if vvl only for common wet cell in before and after wmask
323!      IF ( lk_vvl ) THEN
324!         DO jk = 2,jpk-1
325!            DO jj = 1,jpj
326!               DO ji = 1,jpi
327!                  IF (zwmaskn(ji,jj,jk) * zwmaskb(ji,jj,jk) == 1._wp .AND. (tmask(ji,jj,1)==0._wp .OR. ptmask_b(ji,jj,1)==0._wp) ) THEN
328!                     !compute weight
329!                     zdzp1 = MAX(0._wp,pdepw_b(ji,jj,jk+1) - gdepw_n(ji,jj,jk+1))
330!                     zdzm1 = MAX(0._wp,gdepw_n(ji,jj,jk  ) - pdepw_b(ji,jj,jk  ))
331!                     zdz   = e3t_n(ji,jj,jk) - zdzp1 - zdzm1 ! if isf : e3t = gdepw_n(ji,jj,jk+1)- gdepw_n(ji,jj,jk)
332!                     !
333!                     IF (zdz .LT. 0._wp) THEN
334!                        CALL ctl_stop( 'STOP', 'rst_iscpl : unable to compute the interpolation' )
335!                     END IF
336!                     tsn(ji,jj,jk,jp_tem) = ( zdzp1*tsb(ji,jj,jk+1,jp_tem) &
337!                        &                   + zdz  *tsb(ji,jj,jk  ,jp_tem) &
338!                        &                   + zdzm1*tsb(ji,jj,jk-1,jp_tem) )/e3t_n(ji,jj,jk)
339!                     tsn(ji,jj,jk,jp_sal) = ( zdzp1*tsb(ji,jj,jk+1,jp_sal) &
340!                        &                   + zdz  *tsb(ji,jj,jk  ,jp_sal) &
341!                        &                   + zdzm1*tsb(ji,jj,jk-1,jp_sal) )/e3t_n(ji,jj,jk)
342!                  END IF
343!               END DO
344!            END DO
345!         END DO               
346!      END IF
347
348      ! closed pool
349      ! -----------------------------------------------------------------------------------------
350      ! case we open a cell but no neigbour cells available to get an estimate of T and S
351      WHERE (tmask(:,:,:) == 1._wp .AND. tsn(:,:,:,2) == 0._wp) 
352         tsn(:,:,:,2) = -99._wp  ! Special value for closed pool (checking purpose in output.init)
353         tmask(:,:,:) = 0._wp    ! set mask to 0 to run
354         umask(:,:,:) = 0._wp
355         vmask(:,:,:) = 0._wp
356      END WHERE
357     
358      ! set mbkt and mikt to 1 in thiese location
359      WHERE (SUM(tmask,dim=3) == 0)
360         mbkt(:,:)=1 ; mbku(:,:)=1 ; mbkv(:,:)=1
361         mikt(:,:)=1 ; miku(:,:)=1 ; mikv(:,:)=1
362      END WHERE
363
364      ! -------------------------------------------------------------------------------------------
365      ! compute new tn and sn if we close cell
366      ! nothing to do
367      !
368      ! deallocation tmp arrays
369      CALL wrk_dealloc(jpi,jpj,jpk,2, zts0                                   )
370      CALL wrk_dealloc(jpi,jpj,jpk,   ztmask0, ztmask1 , ztrp                ) 
371      CALL wrk_dealloc(jpi,jpj,jpk,   zwmaskn, zwmaskb , ztmp3d, zuflux, zvflux, zhdiv, zhdiv2    ) 
372      CALL wrk_dealloc(jpi,jpj,       zsmask0, zsmask1, isfmask                     ) 
373      CALL wrk_dealloc(jpi,jpj,       zdmask , zdsmask, zvcorr, zucorr, zde3t) 
374      CALL wrk_dealloc(jpi,jpj,       zbub   , zbvb    , zbun  , zbvn        ) 
375      CALL wrk_dealloc(jpi,jpj,       zssh0  , zssh1  , zhu1 , zhv1          ) 
376
377   END SUBROUTINE iscpl_rst_interpol
378
379END MODULE iscplrst
Note: See TracBrowser for help on using the repository browser.