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.
agrif_opa_sponge.F90 in branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/NST_SRC – NEMO

source: branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/NST_SRC/agrif_opa_sponge.F90 @ 4789

Last change on this file since 4789 was 4789, checked in by rblod, 10 years ago

dev_r4765_CNRS_agrif: First update of AGRIF for dynamic only (_flt and _ts), see ticket #1380 and associated wiki page

  • Property svn:keywords set to Id
File size: 18.1 KB
Line 
1#define SPONGE && define SPONGE_TOP
2
3MODULE agrif_opa_sponge
4#if defined key_agrif  && ! defined key_offline
5   USE par_oce
6   USE oce
7   USE dom_oce
8   USE in_out_manager
9   USE agrif_oce
10   USE wrk_nemo 
11
12   IMPLICIT NONE
13   PRIVATE
14
15   PUBLIC Agrif_Sponge, Agrif_Sponge_Tra, Agrif_Sponge_Dyn
16   PUBLIC interptsn_sponge, interpun_sponge, interpvn_sponge
17
18   !! * Substitutions
19#  include "domzgr_substitute.h90"
20   !!----------------------------------------------------------------------
21   !! NEMO/NST 3.3 , NEMO Consortium (2010)
22   !! $Id$
23   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
24   !!----------------------------------------------------------------------
25
26CONTAINS
27
28   SUBROUTINE Agrif_Sponge_Tra
29      !!---------------------------------------------
30      !!   *** ROUTINE Agrif_Sponge_Tra ***
31      !!---------------------------------------------
32      !!
33      REAL(wp) :: timecoeff
34
35#if defined SPONGE
36      timecoeff = REAL(Agrif_NbStepint(),wp)/Agrif_rhot()
37
38      CALL Agrif_Sponge
39      Agrif_SpecialValue=0.
40      Agrif_UseSpecialValue = .TRUE.
41      tabspongedone_tsn = .FALSE.
42
43      CALL Agrif_Bc_Variable(tsn_sponge_id,calledweight=timecoeff,procname=interptsn_sponge)
44
45      Agrif_UseSpecialValue = .FALSE.
46#endif
47
48   END SUBROUTINE Agrif_Sponge_Tra
49
50   SUBROUTINE Agrif_Sponge_dyn
51      !!---------------------------------------------
52      !!   *** ROUTINE Agrif_Sponge_dyn ***
53      !!---------------------------------------------
54      !!
55      REAL(wp) :: timecoeff
56
57#if defined SPONGE
58      timecoeff = REAL(Agrif_NbStepint(),wp)/Agrif_rhot()
59
60      Agrif_SpecialValue=0.
61      Agrif_UseSpecialValue = ln_spc_dyn
62
63      tabspongedone_u = .FALSE.
64      tabspongedone_v = .FALSE.         
65      CALL Agrif_Bc_Variable(un_sponge_id,calledweight=timecoeff,procname=interpun_sponge)
66
67      tabspongedone_u = .FALSE.
68      tabspongedone_v = .FALSE.
69      CALL Agrif_Bc_Variable(vn_sponge_id,calledweight=timecoeff,procname=interpvn_sponge)
70
71      Agrif_UseSpecialValue = .FALSE.
72#endif
73
74   END SUBROUTINE Agrif_Sponge_dyn
75
76   SUBROUTINE Agrif_Sponge
77      !!---------------------------------------------
78      !!   *** ROUTINE  Agrif_Sponge ***
79      !!---------------------------------------------
80      INTEGER  :: ji,jj,jk
81      INTEGER  :: ispongearea, ilci, ilcj
82      REAL(wp) :: z1spongearea
83      REAL(wp), POINTER, DIMENSION(:,:) :: zlocalviscsponge
84
85#if defined SPONGE || defined SPONGE_TOP
86
87      CALL wrk_alloc( jpi, jpj, zlocalviscsponge )
88
89      ispongearea  = 2 + 2 * Agrif_irhox()
90      ilci = nlci - ispongearea
91      ilcj = nlcj - ispongearea 
92      z1spongearea = 1._wp / REAL( ispongearea - 2 )
93      spbtr2(:,:) = 1. / ( e1t(:,:) * e2t(:,:) )
94
95      ! Tracers
96      IF( .NOT. spongedoneT ) THEN
97         zlocalviscsponge(:,:) = 0.
98         spe1ur(:,:) = 0.
99         spe2vr(:,:) = 0.
100
101         IF( (nbondi == -1) .OR. (nbondi == 2) ) THEN
102            DO ji = 2, ispongearea
103               zlocalviscsponge(ji,:) = visc_tra * ( ispongearea-ji ) * z1spongearea
104            ENDDO
105            spe1ur(2:ispongearea-1,:      ) = 0.5 * ( zlocalviscsponge(2:ispongearea-1,:      )   &
106                  &                         +            zlocalviscsponge(3:ispongearea  ,:      ) ) &
107                  &                         * e2u(2:ispongearea-1,:      ) / e1u(2:ispongearea-1,:      )
108            spe2vr(2:ispongearea  ,1:jpjm1) = 0.5 * ( zlocalviscsponge(2:ispongearea  ,1:jpjm1)   &
109                  &                         +            zlocalviscsponge(2:ispongearea,2  :jpj  ) ) &
110                  &                         * e1v(2:ispongearea  ,1:jpjm1) / e2v(2:ispongearea  ,1:jpjm1)
111         ENDIF
112
113         IF( (nbondi == 1) .OR. (nbondi == 2) ) THEN
114            DO ji = ilci+1,nlci-1
115               zlocalviscsponge(ji,:) = visc_tra * (ji - (ilci+1) ) * z1spongearea
116            ENDDO
117
118            spe1ur(ilci+1:nlci-2,:      ) = 0.5 * (  zlocalviscsponge(ilci+1:nlci-2,:)    & 
119                  &                          +          zlocalviscsponge(ilci+2:nlci-1,:) )  &
120                  &                          * e2u(ilci+1:nlci-2,:) / e1u(ilci+1:nlci-2,:)
121
122            spe2vr(ilci+1:nlci-1,1:jpjm1) = 0.5 * (  zlocalviscsponge(ilci+1:nlci-1,1:jpjm1)    & 
123                  &                            +        zlocalviscsponge(ilci+1:nlci-1,2:jpj  )  ) & 
124                  &                                   * e1v(ilci+1:nlci-1,1:jpjm1) / e2v(ilci+1:nlci-1,1:jpjm1)
125         ENDIF
126
127         IF( (nbondj == -1) .OR. (nbondj == 2) ) THEN
128            DO jj = 2, ispongearea
129               zlocalviscsponge(:,jj) = visc_tra * ( ispongearea-jj ) * z1spongearea
130            ENDDO
131            spe1ur(1:jpim1,2:ispongearea  ) = 0.5 * ( zlocalviscsponge(1:jpim1,2:ispongearea  ) & 
132                  &                            +         zlocalviscsponge(2:jpi  ,2:ispongearea) ) &
133                  &                            * e2u(1:jpim1,2:ispongearea) / e1u(1:jpim1,2:ispongearea)
134
135            spe2vr(:      ,2:ispongearea-1) = 0.5 * ( zlocalviscsponge(:,2:ispongearea-1)       &
136                  &                            +         zlocalviscsponge(:,3:ispongearea  )     ) &
137                  &                            * e1v(:,2:ispongearea-1) / e2v(:,2:ispongearea-1)
138         ENDIF
139
140         IF( (nbondj == 1) .OR. (nbondj == 2) ) THEN
141            DO jj = ilcj+1,nlcj-1
142               zlocalviscsponge(:,jj) = visc_tra * (jj - (ilcj+1) ) * z1spongearea
143            ENDDO
144            spe1ur(1:jpim1,ilcj+1:nlcj-1) = 0.5 * ( zlocalviscsponge(1:jpim1,ilcj+1:nlcj-1)   &
145                  &                          +         zlocalviscsponge(2:jpi  ,ilcj+1:nlcj-1) ) &
146                  &                                * e2u(1:jpim1,ilcj+1:nlcj-1) / e1u(1:jpim1,ilcj+1:nlcj-1)
147            spe2vr(:      ,ilcj+1:nlcj-2) = 0.5 * ( zlocalviscsponge(:,ilcj+1:nlcj-2      )   &
148                  &                          +         zlocalviscsponge(:,ilcj+2:nlcj-1)     )   &
149                  &                                * e1v(:,ilcj+1:nlcj-2) / e2v(:,ilcj+1:nlcj-2)
150         ENDIF
151         spongedoneT = .TRUE.
152      ENDIF
153
154      ! Dynamics
155      IF( .NOT. spongedoneU ) THEN
156         zlocalviscsponge(:,:) = 0.
157         spe1ur2(:,:) = 0.
158         spe2vr2(:,:) = 0.
159
160         IF( (nbondi == -1) .OR. (nbondi == 2) ) THEN
161            DO ji = 2, ispongearea
162               zlocalviscsponge(ji,:) = visc_dyn * ( ispongearea-ji ) * z1spongearea
163            ENDDO
164            spe1ur2(2:ispongearea-1,:      ) = 0.5 * ( zlocalviscsponge(2:ispongearea-1,:      ) &
165                  &     +   zlocalviscsponge(3:ispongearea,:    ) )
166            spe2vr2(2:ispongearea  ,1:jpjm1) = 0.5 * ( zlocalviscsponge(2:ispongearea  ,1:jpjm1) &
167                  &     +   zlocalviscsponge(2:ispongearea,2:jpj) ) 
168         ENDIF
169
170         IF( (nbondi == 1) .OR. (nbondi == 2) ) THEN
171            DO ji = ilci+1,nlci-1
172               zlocalviscsponge(ji,:) = visc_dyn * (ji - (ilci+1) ) * z1spongearea
173            ENDDO
174            spe1ur2(ilci+1:nlci-2,:      ) = 0.5 * (  zlocalviscsponge(ilci+1:nlci-2,:) &
175                  &        + zlocalviscsponge(ilci+2:nlci-1,:) ) 
176            spe2vr2(ilci+1:nlci-1,1:jpjm1) = 0.5 * (  zlocalviscsponge(ilci+1:nlci-1,1:jpjm1) &
177                  &        + zlocalviscsponge(ilci+1:nlci-1,2:jpj  )  ) 
178         ENDIF
179
180         IF( (nbondj == -1) .OR. (nbondj == 2) ) THEN
181            DO jj = 2, ispongearea
182               zlocalviscsponge(:,jj) = visc_dyn * ( ispongearea-jj ) * z1spongearea
183            ENDDO
184            spe1ur2(1:jpim1,2:ispongearea  ) = 0.5 * ( zlocalviscsponge(1:jpim1,2:ispongearea) &
185                  &      + zlocalviscsponge(2:jpi,2:ispongearea) ) 
186            spe2vr2(:      ,2:ispongearea-1) = 0.5 * ( zlocalviscsponge(:,2:ispongearea-1)     &
187                  &      + zlocalviscsponge(:,3:ispongearea)     )
188         ENDIF
189
190         IF( (nbondj == 1) .OR. (nbondj == 2) ) THEN
191            DO jj = ilcj+1,nlcj-1
192               zlocalviscsponge(:,jj) = visc_dyn * (jj - (ilcj+1) ) * z1spongearea
193            ENDDO
194            spe1ur2(1:jpim1,ilcj+1:nlcj-1) = 0.5 * ( zlocalviscsponge(1:jpim1,ilcj+1:nlcj-1) &
195                  &         + zlocalviscsponge(2:jpi,ilcj+1:nlcj-1) ) 
196            spe2vr2(:      ,ilcj+1:nlcj-2) = 0.5 * ( zlocalviscsponge(:,ilcj+1:nlcj-2      ) &
197                  &         + zlocalviscsponge(:,ilcj+2:nlcj-1)     )
198         ENDIF
199         spongedoneU = .TRUE.
200         spbtr3(:,:) = 1. / ( e1f(:,:) * e2f(:,:) )
201      ENDIF
202      !
203      CALL wrk_dealloc( jpi, jpj, zlocalviscsponge )
204      !
205#endif
206
207   END SUBROUTINE Agrif_Sponge
208
209   SUBROUTINE interptsn_sponge(tabres,i1,i2,j1,j2,k1,k2,n1,n2,before)
210      !!---------------------------------------------
211      !!   *** ROUTINE interptsn_sponge ***
212      !!---------------------------------------------
213      INTEGER, INTENT(in) :: i1,i2,j1,j2,k1,k2,n1,n2
214      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2), INTENT(inout) :: tabres
215      LOGICAL, INTENT(in) :: before
216
217
218      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices
219
220      REAL(wp) :: ztsa, zabe1, zabe2, zbtr
221      REAL(wp), DIMENSION(i1:i2,j1:j2) :: ztu, ztv
222      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2) ::tsbdiff
223      !
224
225
226      IF (before) THEN
227         tabres(i1:i2,j1:j2,k1:k2,n1:n2) = tsn(i1:i2,j1:j2,k1:k2,n1:n2)
228      ELSE     
229
230         tsbdiff(:,:,:,:) = tsb(i1:i2,j1:j2,:,:) - tabres(:,:,:,:)     
231         DO jn = 1, jpts
232            DO jk = 1, jpkm1
233
234               DO jj = j1,j2-1
235                  DO ji = i1,i2-1
236                     zabe1 = umask(ji,jj,jk) * spe1ur(ji,jj) * fse3u(ji,jj,jk)
237                     zabe2 = vmask(ji,jj,jk) * spe2vr(ji,jj) * fse3v(ji,jj,jk)
238                     ztu(ji,jj) = zabe1 * ( tsbdiff(ji+1,jj  ,jk,jn) - tsbdiff(ji,jj,jk,jn) )
239                     ztv(ji,jj) = zabe2 * ( tsbdiff(ji  ,jj+1,jk,jn) - tsbdiff(ji,jj,jk,jn) )
240                  ENDDO
241               ENDDO
242
243               DO jj = j1+1,j2-1
244                  DO ji = i1+1,i2-1
245
246                     IF (.NOT. tabspongedone_tsn(ji,jj)) THEN
247                        zbtr = spbtr2(ji,jj) / fse3t(ji,jj,jk)
248                        ! horizontal diffusive trends
249                        ztsa = zbtr * (  ztu(ji,jj) - ztu(ji-1,jj  ) + ztv(ji,jj) - ztv(ji  ,jj-1)  )
250                        ! add it to the general tracer trends
251                        tsa(ji,jj,jk,jn) = tsa(ji,jj,jk,jn) + ztsa
252                     ENDIF
253
254                  ENDDO
255               ENDDO
256
257            ENDDO
258         ENDDO
259
260         tabspongedone_tsn(i1+1:i2-1,j1+1:j2-1) = .TRUE.
261
262      ENDIF
263
264   END SUBROUTINE interptsn_sponge
265
266   SUBROUTINE interpun_sponge(tabres,i1,i2,j1,j2,k1,k2, before)
267      !!---------------------------------------------
268      !!   *** ROUTINE interpun_sponge ***
269      !!---------------------------------------------   
270      INTEGER, INTENT(in) :: i1,i2,j1,j2,k1,k2
271      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) :: tabres
272      LOGICAL, INTENT(in) :: before
273
274      INTEGER :: ji,jj,jk
275
276      ! sponge parameters
277      REAL(wp) :: ze2u, ze1v, zua, zva, zbtr
278      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2) :: ubdiff
279      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2) :: rotdiff, hdivdiff
280      INTEGER :: jmax
281      !
282
283
284      IF (before) THEN
285
286         tabres = un(i1:i2,j1:j2,:)
287
288      ELSE
289
290         ubdiff(i1:i2,j1:j2,:) = (ub(i1:i2,j1:j2,:) - tabres(:,:,:))*umask(i1:i2,j1:j2,:)
291
292         DO jk=1,jpkm1
293            ubdiff(i1:i2,j1:j2,jk) = ubdiff(i1:i2,j1:j2,jk) * spe1ur2(i1:i2,j1:j2)
294         ENDDO
295
296         DO jk = 1, jpkm1                                 ! Horizontal slab
297            !                                             ! ===============
298
299            !                                             ! --------
300            ! Horizontal divergence                       !   div
301            !                                             ! --------
302            DO jj = j1,j2
303               DO ji = i1+1,i2   ! vector opt.
304                  zbtr = spbtr2(ji,jj) / fse3t(ji,jj,jk)
305                  hdivdiff(ji,jj,jk) = (e2u(ji,jj)*fse3u(ji,jj,jk) * ubdiff(ji,jj,jk) - e2u(ji-1,jj)* fse3u(ji-1,jj  ,jk)  &
306                        * ubdiff(ji-1,jj  ,jk) ) * zbtr
307               END DO
308            END DO
309
310            DO jj = j1,j2-1
311               DO ji = i1,i2   ! vector opt.
312                  zbtr = spbtr3(ji,jj) * fse3f(ji,jj,jk)
313                  rotdiff(ji,jj,jk) = (- e1u(ji  ,jj+1) * ubdiff(ji  ,jj+1,jk) + e1u(ji,jj) * ubdiff(ji,jj,jk)  ) &
314                        * fmask(ji,jj,jk) * zbtr 
315               END DO
316            END DO
317         ENDDO
318
319         !
320
321
322
323         DO jj = j1+1, j2-1
324            DO ji = i1+1, i2-1   ! vector opt.
325
326               IF (.NOT. tabspongedone_u(ji,jj)) THEN
327                  DO jk = 1, jpkm1                                 ! Horizontal slab
328                     ze2u = rotdiff (ji,jj,jk)
329                     ze1v = hdivdiff(ji,jj,jk)
330                     ! horizontal diffusive trends
331                     zua = - ( ze2u - rotdiff (ji,jj-1,jk)) / ( e2u(ji,jj) * fse3u(ji,jj,jk) )   &
332                           + ( hdivdiff(ji+1,jj,jk) - ze1v  ) / e1u(ji,jj)
333
334                     ! add it to the general momentum trends
335                     ua(ji,jj,jk) = ua(ji,jj,jk) + zua
336
337                  END DO
338               ENDIF
339
340            END DO
341         END DO
342
343         tabspongedone_u(i1+1:i2-1,j1+1:j2-1) = .TRUE.
344
345         jmax = j2-1
346         IF ((nbondj == 1).OR.(nbondj == 2)) jmax = MIN(jmax,nlcj-3)
347
348         DO jj = j1+1, jmax
349            DO ji = i1+1, i2   ! vector opt.
350
351               IF (.NOT. tabspongedone_v(ji,jj)) THEN
352                  DO jk = 1, jpkm1                                 ! Horizontal slab
353                     ze2u = rotdiff (ji,jj,jk)
354                     ze1v = hdivdiff(ji,jj,jk)
355
356                     ! horizontal diffusive trends
357                     zva = + ( ze2u - rotdiff (ji-1,jj,jk)) / ( e1v(ji,jj) * fse3v(ji,jj,jk) )   &
358                           + ( hdivdiff(ji,jj+1,jk) - ze1v  ) / e2v(ji,jj)
359
360                     ! add it to the general momentum trends
361                     va(ji,jj,jk) = va(ji,jj,jk) + zva
362                  END DO
363               ENDIF
364
365            END DO
366         END DO
367
368
369         tabspongedone_v(i1+1:i2,j1+1:jmax) = .TRUE.
370
371      ENDIF
372
373
374   END SUBROUTINE interpun_sponge
375
376
377   SUBROUTINE interpvn_sponge(tabres,i1,i2,j1,j2,k1,k2, before,nb,ndir)
378      !!---------------------------------------------
379      !!   *** ROUTINE interpvn_sponge ***
380      !!---------------------------------------------
381      INTEGER, INTENT(in) :: i1,i2,j1,j2,k1,k2
382      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) :: tabres
383      LOGICAL, INTENT(in) :: before
384      INTEGER, INTENT(in) :: nb , ndir
385
386      INTEGER :: ji,jj,jk
387
388      REAL(wp) :: ze2u, ze1v, zua, zva, zbtr
389
390      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2) :: vbdiff
391      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2) :: rotdiff, hdivdiff
392      INTEGER :: imax
393      !
394
395      IF (before) THEN
396         tabres = vn(i1:i2,j1:j2,:)
397      ELSE
398
399         vbdiff(i1:i2,j1:j2,:) = (vb(i1:i2,j1:j2,:) - tabres(:,:,:))*vmask(i1:i2,j1:j2,:)
400
401         DO jk=1,jpkm1
402            vbdiff(i1:i2,j1:j2,jk) = vbdiff(i1:i2,j1:j2,jk) * spe2vr2(i1:i2,j1:j2)
403         ENDDO
404
405         DO jk = 1, jpkm1                                 ! Horizontal slab
406            !                                             ! ===============
407
408            !                                             ! --------
409            ! Horizontal divergence                       !   div
410            !                                             ! --------
411            DO jj = j1+1,j2
412               DO ji = i1,i2   ! vector opt.
413                  zbtr = spbtr2(ji,jj) / fse3t(ji,jj,jk)
414                  hdivdiff(ji,jj,jk) = (e1v(ji,jj) * fse3v(ji,jj,jk) * vbdiff(ji,jj,jk) - e1v(ji  ,jj-1) &
415                        * fse3v(ji  ,jj-1,jk)  * vbdiff(ji  ,jj-1,jk)  ) * zbtr
416               END DO
417            END DO
418            DO jj = j1,j2
419               DO ji = i1,i2-1   ! vector opt.
420                  zbtr = spbtr3(ji,jj) * fse3f(ji,jj,jk)
421                  rotdiff(ji,jj,jk) = (e2v(ji+1,jj  ) * vbdiff(ji+1,jj  ,jk) - e2v(ji,jj) * vbdiff(ji,jj,jk)) &
422                        * fmask(ji,jj,jk) * zbtr
423               END DO
424            END DO
425         ENDDO
426
427         !                                                ! ===============
428         !                                               
429
430         imax = i2-1
431         IF ((nbondi == 1).OR.(nbondi == 2)) imax = MIN(imax,nlci-3)
432
433         DO jj = j1+1, j2
434            DO ji = i1+1, imax   ! vector opt.
435               IF (.NOT. tabspongedone_u(ji,jj)) THEN
436                  DO jk = 1, jpkm1                                 ! Horizontal slab
437                     ze2u = rotdiff (ji,jj,jk)
438                     ze1v = hdivdiff(ji,jj,jk)
439                     ! horizontal diffusive trends
440                     zua = - ( ze2u - rotdiff (ji,jj-1,jk)) / ( e2u(ji,jj) * fse3u(ji,jj,jk) ) + ( hdivdiff(ji+1,jj,jk) - ze1v) &
441                           / e1u(ji,jj)
442
443
444                     ! add it to the general momentum trends
445                     ua(ji,jj,jk) = ua(ji,jj,jk) + zua
446                  END DO
447
448               ENDIF
449            END DO
450         END DO
451
452         tabspongedone_u(i1+1:imax,j1+1:j2) = .TRUE.
453
454         DO jj = j1+1, j2-1
455            DO ji = i1+1, i2-1   ! vector opt.
456               IF (.NOT. tabspongedone_v(ji,jj)) THEN
457                  DO jk = 1, jpkm1                                 ! Horizontal slab
458                     ze2u = rotdiff (ji,jj,jk)
459                     ze1v = hdivdiff(ji,jj,jk)
460                     ! horizontal diffusive trends
461
462                     zva = + ( ze2u - rotdiff (ji-1,jj,jk)) / ( e1v(ji,jj) * fse3v(ji,jj,jk) ) + ( hdivdiff(ji,jj+1,jk) - ze1v) &
463                           / e2v(ji,jj)
464
465                     ! add it to the general momentum trends
466                     va(ji,jj,jk) = va(ji,jj,jk) + zva
467                  END DO
468               ENDIF
469            END DO
470         END DO
471         tabspongedone_v(i1+1:i2-1,j1+1:j2-1) = .TRUE.
472      ENDIF
473
474   END SUBROUTINE interpvn_sponge
475
476#else
477CONTAINS
478
479   SUBROUTINE agrif_opa_sponge_empty
480      !!---------------------------------------------
481      !!   *** ROUTINE agrif_OPA_sponge_empty ***
482      !!---------------------------------------------
483      WRITE(*,*)  'agrif_opa_sponge : You should not have seen this print! error?'
484   END SUBROUTINE agrif_opa_sponge_empty
485#endif
486
487END MODULE agrif_opa_sponge
Note: See TracBrowser for help on using the repository browser.