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.
iscplrst.F90 in branches/UKMO/dev_isf_divg_corr_GO6_package_r9385/NEMOGCM/NEMO/OPA_SRC/DOM – NEMO

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

Last change on this file since 9835 was 9835, checked in by antsia, 6 years ago

set detect_missing_value back to true again in field_def.xml and remove unused variables

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