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_ice_interp.F90 in NEMO/trunk/src/NST – NEMO

source: NEMO/trunk/src/NST/agrif_ice_interp.F90 @ 14162

Last change on this file since 14162 was 14125, checked in by jchanut, 3 years ago

#2222, restore correct ssh initialization from parent grid + suppress useless ice initializations (Clement)

  • Property svn:keywords set to Id
File size: 19.8 KB
Line 
1MODULE agrif_ice_interp
2   !!=====================================================================================
3   !!                       ***  MODULE agrif_ice_interp ***
4   !! Nesting module :  interp surface ice boundary condition from a parent grid
5   !!=====================================================================================
6   !! History :  2.0   !  04-2008  (F. Dupont)               initial version
7   !!            3.4   !  09-2012  (R. Benshila, C. Herbaut) update and EVP
8   !!            4.0   !  2018     (C. Rousset)              SI3 compatibility
9   !!----------------------------------------------------------------------
10#if defined key_agrif && defined key_si3 
11   !!----------------------------------------------------------------------
12   !!   'key_si3'                                         SI3 sea-ice model
13   !!   'key_agrif'                                       AGRIF library
14   !!----------------------------------------------------------------------
15   !!  agrif_interp_ice    : interpolation of ice at "after" sea-ice time step
16   !!  interp_u_ice   : atomic routine to interpolate u_ice
17   !!  interp_v_ice   : atomic routine to interpolate v_ice
18   !!  interp_tra_ice : atomic routine to interpolate ice properties
19   !!----------------------------------------------------------------------
20   USE par_oce
21   USE dom_oce
22   USE sbc_oce
23   USE ice
24   USE agrif_ice
25   USE agrif_oce
26   USE phycst , ONLY: rt0
27   USE icevar
28   USE sbc_ice, ONLY : tn_ice
29   
30   IMPLICIT NONE
31   PRIVATE
32
33   PUBLIC   agrif_interp_ice   ! called by agrif_user.F90
34   PUBLIC   agrif_istate_ice   ! called by icerst.F90
35
36   !!----------------------------------------------------------------------
37   !! NEMO/NST 4.0 , NEMO Consortium (2018)
38   !! $Id$
39   !! Software governed by the CeCILL license (see ./LICENSE)
40   !!----------------------------------------------------------------------
41
42CONTAINS
43
44   SUBROUTINE agrif_istate_ice
45      !!-----------------------------------------------------------------------
46      !!                 *** ROUTINE agrif_istate_ice  ***
47      !!
48      !!  ** Method  : Set initial ice fields from parent grid
49      !!
50      !!-----------------------------------------------------------------------
51      IF(lwp) WRITE(numout,*) ' '
52      IF(lwp) WRITE(numout,*) 'Agrif_istate_ice : interp child ice initial state from parent'
53      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~~~'
54      IF(lwp) WRITE(numout,*) ' '
55
56      ! Set a_i, v_i, v_s, sv_i, oa_i, a_ip, v_ip, t_su, e_s, e_i:
57      Agrif_SpecialValue    = -9999.
58      Agrif_UseSpecialValue = .TRUE.
59      CALL Agrif_init_variable(tra_iceini_id,procname=interp_tra_ice)
60      !
61      ! Set u_ice, v_ice:
62      use_sign_north = .TRUE.
63      sign_north = -1.
64      Agrif_UseSpecialValue = .TRUE.
65      CALL Agrif_init_variable(u_iceini_id  ,procname=interp_u_ice)
66      CALL Agrif_init_variable(v_iceini_id  ,procname=interp_v_ice)
67      Agrif_SpecialValue = 0._wp
68      use_sign_north = .FALSE.
69      Agrif_UseSpecialValue = .FALSE.
70      ! lbc ????
71      !
72      CALL ice_var_glo2eqv
73      !
74   END SUBROUTINE agrif_istate_ice
75
76   SUBROUTINE agrif_interp_ice( cd_type, kiter, kitermax )
77      !!-----------------------------------------------------------------------
78      !!                 *** ROUTINE agrif_interp_ice  ***
79      !!
80      !!  ** Method  : simple call to atomic routines using stored values to
81      !!  fill the boundaries depending of the position of the point and
82      !!  computing factor for time interpolation
83      !!-----------------------------------------------------------------------
84      CHARACTER(len=1), INTENT(in   )           ::   cd_type
85      INTEGER         , INTENT(in   ), OPTIONAL ::   kiter, kitermax
86      !!
87      REAL(wp) ::   zbeta   ! local scalar
88      !!-----------------------------------------------------------------------
89      !
90      IF( Agrif_Root() .OR. nn_ice==0 )  RETURN   ! do not interpolate if inside Parent Grid or if child domain does not have ice
91      !
92      SELECT CASE( cd_type )
93      CASE('U','V')
94         IF( PRESENT( kiter ) ) THEN  ! interpolation at the child ice sub-time step (only for ice rheology)
95            zbeta = ( REAL(nbstep_ice) - REAL(kitermax - kiter) / REAL(kitermax) ) /  &
96               &    ( Agrif_Rhot() * REAL(Agrif_Parent(nn_fsbc)) / REAL(nn_fsbc) )
97         ELSE                         ! interpolation at the child ice time step
98            zbeta = REAL(nbstep_ice) / ( Agrif_Rhot() * REAL(Agrif_Parent(nn_fsbc)) / REAL(nn_fsbc) )
99         ENDIF
100      CASE('T')
101            zbeta = REAL(nbstep_ice) / ( Agrif_Rhot() * REAL(Agrif_Parent(nn_fsbc)) / REAL(nn_fsbc) )
102      END SELECT
103      !
104      Agrif_SpecialValue    = -9999.
105      Agrif_UseSpecialValue = .TRUE.
106
107      use_sign_north = .TRUE.
108      sign_north = -1.
109      if (cd_type == 'T') use_sign_north = .FALSE.
110
111      SELECT CASE( cd_type )
112      CASE('U')   ;   CALL Agrif_Bc_variable( u_ice_id  , procname=interp_u_ice  , calledweight=zbeta )
113      CASE('V')   ;   CALL Agrif_Bc_variable( v_ice_id  , procname=interp_v_ice  , calledweight=zbeta )
114      CASE('T')   ;   CALL Agrif_Bc_variable( tra_ice_id, procname=interp_tra_ice, calledweight=zbeta )
115      END SELECT
116      Agrif_SpecialValue    = 0._wp
117      Agrif_UseSpecialValue = .FALSE.
118     
119      use_sign_north = .FALSE.
120      !
121   END SUBROUTINE agrif_interp_ice
122
123
124   SUBROUTINE interp_u_ice( ptab, i1, i2, j1, j2, before )
125      !!-----------------------------------------------------------------------
126      !!                     *** ROUTINE interp_u_ice ***
127      !!
128      !! i1 i2 j1 j2 are the index of the boundaries parent(when before) and child (when after)
129      !! To solve issues when parent grid is "land" masked but not all the corresponding child
130      !! grid points, put Agrif_SpecialValue WHERE the parent grid is masked.
131      !! The child solution will be found in the 9(?) points around
132      !!-----------------------------------------------------------------------
133      INTEGER                         , INTENT(in   ) ::   i1, i2, j1, j2
134      REAL(wp), DIMENSION(i1:i2,j1:j2), INTENT(inout) ::   ptab
135      LOGICAL                         , INTENT(in   ) ::   before
136      !!
137      REAL(wp) ::   zrhoy   ! local scalar
138      !!-----------------------------------------------------------------------
139      !
140      IF( before ) THEN  ! parent grid
141         ptab(:,:) = e2u(i1:i2,j1:j2) * u_ice(i1:i2,j1:j2)
142         WHERE( umask(i1:i2,j1:j2,1) == 0. )   ptab(i1:i2,j1:j2) = Agrif_SpecialValue
143      ELSE               ! child grid
144         zrhoy = Agrif_Rhoy()
145         u_ice(i1:i2,j1:j2) = ptab(i1:i2,j1:j2) / ( e2u(i1:i2,j1:j2) * zrhoy ) * umask(i1:i2,j1:j2,1)
146      ENDIF
147      !
148   END SUBROUTINE interp_u_ice
149
150
151   SUBROUTINE interp_v_ice( ptab, i1, i2, j1, j2, before )
152      !!-----------------------------------------------------------------------
153      !!                    *** ROUTINE interp_v_ice ***
154      !!
155      !! i1 i2 j1 j2 are the index of the boundaries parent(when before) and child (when after)
156      !! To solve issues when parent grid is "land" masked but not all the corresponding child
157      !! grid points, put Agrif_SpecialValue WHERE the parent grid is masked.
158      !! The child solution will be found in the 9(?) points around
159      !!-----------------------------------------------------------------------     
160      INTEGER                         , INTENT(in   ) ::   i1, i2, j1, j2
161      REAL(wp), DIMENSION(i1:i2,j1:j2), INTENT(inout) ::   ptab
162      LOGICAL                         , INTENT(in   ) ::   before
163      !!
164      REAL(wp) ::   zrhox   ! local scalar
165      !!-----------------------------------------------------------------------
166      !
167      IF( before ) THEN  ! parent grid
168         ptab(:,:) = e1v(i1:i2,j1:j2) * v_ice(i1:i2,j1:j2)
169         WHERE( vmask(i1:i2,j1:j2,1) == 0. )   ptab(i1:i2,j1:j2) = Agrif_SpecialValue
170      ELSE               ! child grid
171         zrhox = Agrif_Rhox()
172         v_ice(i1:i2,j1:j2) = ptab(i1:i2,j1:j2) / ( e1v(i1:i2,j1:j2) * zrhox ) * vmask(i1:i2,j1:j2,1)
173      ENDIF
174      !
175   END SUBROUTINE interp_v_ice
176
177
178   SUBROUTINE interp_tra_ice( ptab, i1, i2, j1, j2, k1, k2, before, nb, ndir )
179      !!-----------------------------------------------------------------------
180      !!                    *** ROUTINE interp_tra_ice ***                           
181      !!
182      !! i1 i2 j1 j2 are the index of the boundaries parent(when before) and child (when after)
183      !! To solve issues when parent grid is "land" masked but not all the corresponding child
184      !! grid points, put Agrif_SpecialValue WHERE the parent grid is masked.
185      !! The child solution will be found in the 9(?) points around
186      !!-----------------------------------------------------------------------
187      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) ::   ptab
188      INTEGER                               , INTENT(in   ) ::   i1, i2, j1, j2, k1, k2
189      LOGICAL                               , INTENT(in   ) ::   before
190      INTEGER                               , INTENT(in   ) ::   nb, ndir
191      !!
192      INTEGER  ::   ji, jj, jk, jl, jm
193      INTEGER  ::   imin, imax, jmin, jmax
194      LOGICAL  ::   western_side, eastern_side, northern_side, southern_side
195      REAL(wp) ::   zrhox, z1, z2, z3, z4, z5, z6, z7
196      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztab
197      !!-----------------------------------------------------------------------
198      ! tracers are not multiplied by grid cell here => before: * e1e2t ; after: * r1_e1e2t / rhox / rhoy
199      ! and it is ok since we conserve tracers (same as in the ocean).
200      ALLOCATE( ztab(SIZE(a_i,1),SIZE(a_i,2),SIZE(ptab,3)) )
201
202      IF( before ) THEN  ! parent grid
203         jm = 1
204         DO jl = 1, jpl
205            ptab(i1:i2,j1:j2,jm  ) = a_i (i1:i2,j1:j2,jl)
206            ptab(i1:i2,j1:j2,jm+1) = v_i (i1:i2,j1:j2,jl)
207            ptab(i1:i2,j1:j2,jm+2) = v_s (i1:i2,j1:j2,jl)
208            ptab(i1:i2,j1:j2,jm+3) = sv_i(i1:i2,j1:j2,jl)
209            ptab(i1:i2,j1:j2,jm+4) = oa_i(i1:i2,j1:j2,jl)
210            ptab(i1:i2,j1:j2,jm+5) = a_ip(i1:i2,j1:j2,jl)
211            ptab(i1:i2,j1:j2,jm+6) = v_ip(i1:i2,j1:j2,jl)
212            ptab(i1:i2,j1:j2,jm+7) = v_il(i1:i2,j1:j2,jl)
213            ptab(i1:i2,j1:j2,jm+8) = t_su(i1:i2,j1:j2,jl)
214            jm = jm + 9
215            DO jk = 1, nlay_s
216               ptab(i1:i2,j1:j2,jm) = e_s(i1:i2,j1:j2,jk,jl)   ;   jm = jm + 1
217            END DO
218            DO jk = 1, nlay_i
219               ptab(i1:i2,j1:j2,jm) = e_i(i1:i2,j1:j2,jk,jl)   ;   jm = jm + 1
220            END DO
221         END DO
222         
223         DO jk = k1, k2
224            WHERE( tmask(i1:i2,j1:j2,1) == 0._wp )   ptab(i1:i2,j1:j2,jk) = Agrif_SpecialValue
225         END DO
226         !
227      ELSE               ! child grid
228         !
229!         IF( nbghostcells > 1 ) THEN   ! ==> The easiest interpolation is used
230            !
231            jm = 1
232            DO jl = 1, jpl
233               !
234               DO jj = j1, j2
235                  DO ji = i1, i2
236                     a_i (ji,jj,jl) = ptab(ji,jj,jm  ) * tmask(ji,jj,1)
237                     v_i (ji,jj,jl) = ptab(ji,jj,jm+1) * tmask(ji,jj,1)
238                     v_s (ji,jj,jl) = ptab(ji,jj,jm+2) * tmask(ji,jj,1)
239                     sv_i(ji,jj,jl) = ptab(ji,jj,jm+3) * tmask(ji,jj,1)
240                     oa_i(ji,jj,jl) = ptab(ji,jj,jm+4) * tmask(ji,jj,1)
241                     a_ip(ji,jj,jl) = ptab(ji,jj,jm+5) * tmask(ji,jj,1)
242                     v_ip(ji,jj,jl) = ptab(ji,jj,jm+6) * tmask(ji,jj,1)
243                     v_il(ji,jj,jl) = ptab(ji,jj,jm+7) * tmask(ji,jj,1)
244                     t_su(ji,jj,jl) = ptab(ji,jj,jm+8) * tmask(ji,jj,1)
245                  END DO
246               END DO
247               jm = jm + 9
248               !
249               DO jk = 1, nlay_s
250                  e_s(i1:i2,j1:j2,jk,jl) = ptab(i1:i2,j1:j2,jm) * tmask(i1:i2,j1:j2,1)
251                  jm = jm + 1
252               END DO
253               !
254               DO jk = 1, nlay_i
255                  e_i(i1:i2,j1:j2,jk,jl) = ptab(i1:i2,j1:j2,jm) * tmask(i1:i2,j1:j2,1)
256                  jm = jm + 1
257               END DO
258               !
259            END DO
260            !
261!!==> clem: this interpolation does not work because it creates negative values, due
262!!          to negative coefficients when mixing points (for ex. z7)
263!!
264!         ELSE                          ! ==> complex interpolation (only one ghost cell available)
265!            !! Use a more complex interpolation since we mix solutions over a couple of grid points
266!            !! it is advised to use it for fields modified by high order schemes (e.g. advection UM5...)
267!            ! record ztab
268!            jm = 1
269!            DO jl = 1, jpl
270!               ztab(:,:,jm  ) = a_i (:,:,jl)
271!               ztab(:,:,jm+1) = v_i (:,:,jl)
272!               ztab(:,:,jm+2) = v_s (:,:,jl)
273!               ztab(:,:,jm+3) = sv_i(:,:,jl)
274!               ztab(:,:,jm+4) = oa_i(:,:,jl)
275!               ztab(:,:,jm+5) = a_ip(:,:,jl)
276!               ztab(:,:,jm+6) = v_ip(:,:,jl)
277!               ztab(:,:,jm+7) = v_il(:,:,jl)
278!               ztab(:,:,jm+8) = t_su(:,:,jl)
279!               jm = jm + 9
280!               DO jk = 1, nlay_s
281!                  ztab(:,:,jm) = e_s(:,:,jk,jl)
282!                  jm = jm + 1
283!               END DO
284!               DO jk = 1, nlay_i
285!                  ztab(:,:,jm) = e_i(:,:,jk,jl)
286!                  jm = jm + 1
287!               END DO
288!               !
289!            END DO
290!            !
291!            ! borders of the domain
292!            western_side  = (nb == 1).AND.(ndir == 1)  ;  eastern_side  = (nb == 1).AND.(ndir == 2)
293!            southern_side = (nb == 2).AND.(ndir == 1)  ;  northern_side = (nb == 2).AND.(ndir == 2)
294!            !
295!            ! spatial smoothing
296!            zrhox = Agrif_Rhox()
297!            z1 =      ( zrhox - 1. ) * 0.5
298!            z3 =      ( zrhox - 1. ) / ( zrhox + 1. )
299!            z6 = 2. * ( zrhox - 1. ) / ( zrhox + 1. )
300!            z7 =    - ( zrhox - 1. ) / ( zrhox + 3. )
301!            z2 = 1. - z1
302!            z4 = 1. - z3
303!            z5 = 1. - z6 - z7
304!            !
305!            ! Remove corners
306!            imin = i1  ;  imax = i2  ;  jmin = j1  ;  jmax = j2
307!            IF( (nbondj == -1) .OR. (nbondj == 2) )   jmin = 3
308!            IF( (nbondj == +1) .OR. (nbondj == 2) )   jmax = jpj-2
309!            IF( (nbondi == -1) .OR. (nbondi == 2) )   imin = 3
310!            IF( (nbondi == +1) .OR. (nbondi == 2) )   imax = jpi-2
311!
312!            ! smoothed fields
313!            IF( eastern_side ) THEN
314!               ztab(jpi,j1:j2,:) = z1 * ptab(jpi,j1:j2,:) + z2 * ptab(jpi-1,j1:j2,:)
315!               DO jj = jmin, jmax
316!                  rswitch = 0.
317!                  IF( u_ice(jpi-2,jj) > 0._wp ) rswitch = 1.
318!                  ztab(jpi-1,jj,:) = ( 1. - umask(jpi-2,jj,1) ) * ztab(jpi,jj,:)  &
319!                     &               +      umask(jpi-2,jj,1)   *  &
320!                     &               ( (1. - rswitch) * ( z4 * ztab(jpi  ,jj,:) + z3 * ztab(jpi-2,jj,:) )  &
321!                     &                 +     rswitch  * ( z6 * ztab(jpi-2,jj,:) + z5 * ztab(jpi  ,jj,:) + z7 * ztab(jpi-3,jj,:) ) )
322!                  ztab(jpi-1,jj,:) = ztab(jpi-1,jj,:) * tmask(jpi-1,jj,1)
323!               END DO
324!            ENDIF
325!            !
326!            IF( northern_side ) THEN
327!               ztab(i1:i2,jpj,:) = z1 * ptab(i1:i2,jpj,:) + z2 * ptab(i1:i2,jpj-1,:)
328!               DO ji = imin, imax
329!                  rswitch = 0.
330!                  IF( v_ice(ji,jpj-2) > 0._wp ) rswitch = 1.
331!                  ztab(ji,jpj-1,:) = ( 1. - vmask(ji,jpj-2,1) ) * ztab(ji,jpj,:)  &
332!                     &               +      vmask(ji,jpj-2,1)   *  &
333!                     &               ( (1. - rswitch) * ( z4 * ztab(ji,jpj  ,:) + z3 * ztab(ji,jpj-2,:) ) &
334!                     &                 +     rswitch  * ( z6 * ztab(ji,jpj-2,:) + z5 * ztab(ji,jpj  ,:) + z7 * ztab(ji,jpj-3,:) ) )
335!                  ztab(ji,jpj-1,:) = ztab(ji,jpj-1,:) * tmask(ji,jpj-1,1)
336!               END DO
337!            END IF
338!            !
339!            IF( western_side) THEN
340!               ztab(1,j1:j2,:) = z1 * ptab(1,j1:j2,:) + z2 * ptab(2,j1:j2,:)
341!               DO jj = jmin, jmax
342!                  rswitch = 0.
343!                  IF( u_ice(2,jj) < 0._wp ) rswitch = 1.
344!                  ztab(2,jj,:) = ( 1. - umask(2,jj,1) ) * ztab(1,jj,:)  &
345!                     &           +      umask(2,jj,1)   *   &
346!                     &           ( ( 1. - rswitch ) * ( z4 * ztab(1,jj,:) + z3 * ztab(3,jj,:) ) &
347!                     &             +      rswitch   * ( z6 * ztab(3,jj,:) + z5 * ztab(1,jj,:) + z7 * ztab(4,jj,:) ) )
348!                  ztab(2,jj,:) = ztab(2,jj,:) * tmask(2,jj,1)
349!               END DO
350!            ENDIF
351!            !
352!            IF( southern_side ) THEN
353!               ztab(i1:i2,1,:) = z1 * ptab(i1:i2,1,:) + z2 * ptab(i1:i2,2,:)
354!               DO ji = imin, imax
355!                  rswitch = 0.
356!                  IF( v_ice(ji,2) < 0._wp ) rswitch = 1.
357!                  ztab(ji,2,:) = ( 1. - vmask(ji,2,1) ) * ztab(ji,1,:)  &
358!                     &           +      vmask(ji,2,1)   *  &
359!                     &           ( ( 1. - rswitch ) * ( z4 * ztab(ji,1,:) + z3 * ztab(ji,3,:) ) &
360!                     &             +      rswitch   * ( z6 * ztab(ji,3,:) + z5 * ztab(ji,1,:) + z7 * ztab(ji,4,:) ) )
361!                  ztab(ji,2,:) = ztab(ji,2,:) * tmask(ji,2,1)
362!               END DO
363!            END IF
364!            !
365!            ! Treatment of corners
366!            IF( (eastern_side) .AND. ((nbondj == -1).OR.(nbondj == 2)) )  ztab(jpi-1,2    ,:) = ptab(jpi-1,    2,:)   ! East south
367!            IF( (eastern_side) .AND. ((nbondj ==  1).OR.(nbondj == 2)) )  ztab(jpi-1,jpj-1,:) = ptab(jpi-1,jpj-1,:)   ! East north
368!            IF( (western_side) .AND. ((nbondj == -1).OR.(nbondj == 2)) )  ztab(    2,    2,:) = ptab(    2,    2,:)   ! West south
369!            IF( (western_side) .AND. ((nbondj ==  1).OR.(nbondj == 2)) )  ztab(    2,jpj-1,:) = ptab(    2,jpj-1,:)   ! West north
370!           
371!            ! retrieve ice tracers
372!            jm = 1
373!            DO jl = 1, jpl
374!               !
375!               DO jj = j1, j2
376!                  DO ji = i1, i2
377!                     a_i (ji,jj,jl) = ztab(ji,jj,jm  ) * tmask(ji,jj,1)
378!                     v_i (ji,jj,jl) = ztab(ji,jj,jm+1) * tmask(ji,jj,1)
379!                     v_s (ji,jj,jl) = ztab(ji,jj,jm+2) * tmask(ji,jj,1)
380!                     sv_i(ji,jj,jl) = ztab(ji,jj,jm+3) * tmask(ji,jj,1)
381!                     oa_i(ji,jj,jl) = ztab(ji,jj,jm+4) * tmask(ji,jj,1)
382!                     a_ip(ji,jj,jl) = ztab(ji,jj,jm+5) * tmask(ji,jj,1)
383!                     v_ip(ji,jj,jl) = ztab(ji,jj,jm+6) * tmask(ji,jj,1)
384!                     v_il(ji,jj,jl) = ztab(ji,jj,jm+7) * tmask(ji,jj,1)
385!                     t_su(ji,jj,jl) = ztab(ji,jj,jm+8) * tmask(ji,jj,1)
386!                  END DO
387!               END DO
388!               jm = jm + 9
389!               !
390!               DO jk = 1, nlay_s
391!                  e_s(i1:i2,j1:j2,jk,jl) = ztab(i1:i2,j1:j2,jm) * tmask(i1:i2,j1:j2,1)
392!                  jm = jm + 1
393!               END DO
394!               !
395!               DO jk = 1, nlay_i
396!                  e_i(i1:i2,j1:j2,jk,jl) = ztab(i1:i2,j1:j2,jm) * tmask(i1:i2,j1:j2,1)
397!                  jm = jm + 1
398!               END DO
399!               !
400!            END DO
401!         
402!         ENDIF  ! nbghostcells=1
403         
404         DO jl = 1, jpl
405            WHERE( tmask(i1:i2,j1:j2,1) == 0._wp )   t_su(i1:i2,j1:j2,jl) = rt0   ! to avoid a division by 0 in sbcblk.F90
406         END DO
407         !
408      ENDIF
409     
410      DEALLOCATE( ztab )
411      !
412   END SUBROUTINE interp_tra_ice
413
414#else
415   !!----------------------------------------------------------------------
416   !!   Empty module                                             no sea-ice
417   !!----------------------------------------------------------------------
418CONTAINS
419   SUBROUTINE agrif_ice_interp_empty
420      WRITE(*,*)  'agrif_ice_interp : You should not have seen this print! error?'
421   END SUBROUTINE agrif_ice_interp_empty
422#endif
423
424   !!======================================================================
425END MODULE agrif_ice_interp
Note: See TracBrowser for help on using the repository browser.