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.
limrhg_2.F90 in trunk/NEMOGCM/NEMO/LIM_SRC_2 – NEMO

source: trunk/NEMOGCM/NEMO/LIM_SRC_2/limrhg_2.F90 @ 3579

Last change on this file since 3579 was 3558, checked in by rblod, 12 years ago

Fix issues when using key_nosignedzeo, see ticket #996

  • Property svn:keywords set to Id
File size: 34.4 KB
RevLine 
[821]1MODULE limrhg_2
[3]2   !!======================================================================
[821]3   !!                     ***  MODULE  limrhg_2  ***
[3]4   !!   Ice rheology :  performs sea ice rheology
5   !!======================================================================
[2528]6   !! History :  0.0  !  1993-12  (M.A. Morales Maqueda.)  Original code
7   !!            1.0  !  1994-12  (H. Goosse)
8   !!            2.0  !  2003-12  (C. Ethe, G. Madec)  F90, mpp
9   !!             -   !  2006-08  (G. Madec)  surface module, ice-stress at I-point
10   !!             -   !  2009-09  (G. Madec)  Huge verctor optimisation
11   !!            3.3  !  2009-05  (G.Garric, C. Bricaud) addition of the lim2_evp case
[888]12   !!----------------------------------------------------------------------
[2528]13#if defined   key_lim2   &&   defined key_lim2_vp
[3]14   !!----------------------------------------------------------------------
[2528]15   !!   'key_lim2'                AND                   LIM-2 sea-ice model
16   !!   'key_lim2_vp'                                       VP ice rheology
[77]17   !!----------------------------------------------------------------------
[821]18   !!   lim_rhg_2   : computes ice velocities
[3]19   !!----------------------------------------------------------------------
[888]20   USE par_oce        ! ocean parameter
[1711]21   USE dom_oce        ! ocean space and time domain
22   USE sbc_oce        ! surface boundary condition: ocean variables
[888]23   USE sbc_ice        ! surface boundary condition: ice variables
[2528]24   USE dom_ice_2      ! LIM2: ice domain
[888]25   USE phycst         ! physical constant
[2528]26   USE ice_2          ! LIM2: ice variables
27   USE lbclnk         ! lateral boundary condition - MPP exchanges
[888]28   USE lib_mpp        ! MPP library
[3294]29   USE wrk_nemo       ! work arrays
[888]30   USE in_out_manager ! I/O manager
31   USE prtctl         ! Print control
[3558]32   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)
[3]33
34   IMPLICIT NONE
35   PRIVATE
36
[2715]37   PUBLIC   lim_rhg_2         ! routine called by lim_dyn
[3]38
[2528]39   REAL(wp) ::   rzero   = 0._wp   ! constant value: zero
40   REAL(wp) ::   rone    = 1._wp   !            and  one
[888]41
42   !! * Substitutions
43#  include "vectopt_loop_substitute.h90"
[3]44   !!----------------------------------------------------------------------
[2528]45   !! NEMO/LIM2 3.3 , UCL - NEMO Consortium (2010)
[1156]46   !! $Id$
[2528]47   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
[3]48   !!----------------------------------------------------------------------
49CONTAINS
50
[821]51   SUBROUTINE lim_rhg_2( k_j1, k_jpj )
[3]52      !!-------------------------------------------------------------------
[821]53      !!                 ***  SUBROUTINR lim_rhg_2  ***
[77]54      !!
[12]55      !! ** purpose :   determines the velocity field of sea ice by using
56      !!  atmospheric (wind stress) and oceanic (water stress and surface
57      !!  tilt) forcings. Ice-ice interaction is described by a non-linear
[391]58      !!  viscous-plastic law including shear strength and a bulk rheology.
[3]59      !!
[1470]60      !! ** Action  : - compute u_ice, v_ice the sea-ice velocity defined
[888]61      !!              at I-point
62      !!-------------------------------------------------------------------
63      INTEGER, INTENT(in) ::   k_j1    ! southern j-index for ice computation
64      INTEGER, INTENT(in) ::   k_jpj   ! northern j-index for ice computation
[719]65      !!
[12]66      INTEGER ::   ji, jj              ! dummy loop indices
[888]67      INTEGER ::   iter, jter          ! temporary integers
68      CHARACTER (len=50) ::   charout
[2528]69      REAL(wp) ::   ze11  , ze12  , ze22  , ze21               ! local scalars
70      REAL(wp) ::   zt11  , zt12  , zt21  , zt22               !   -      -
71      REAL(wp) ::   zvis11, zvis21, zvis12, zvis22             !   -      -
72      REAL(wp) ::   zgphsx, ztagnx, zgsshx, zunw, zur, zusw    !   -      -
73      REAL(wp) ::   zgphsy, ztagny, zgsshy, zvnw, zvr          !   -      -
[888]74      REAL(wp) ::   zresm,  za, zac, zmod
75      REAL(wp) ::   zmpzas, zstms, zindu, zusdtp, zmassdt, zcorlal
76      REAL(wp) ::   ztrace2, zdeter, zdelta, zmask, zdgp, zdgi, zdiag
77      REAL(wp) ::   za1, zb1, zc1, zd1
78      REAL(wp) ::   za2, zb2, zc2, zd2, zden
79      REAL(wp) ::   zs11_11, zs11_12, zs11_21, zs11_22
80      REAL(wp) ::   zs12_11, zs12_12, zs12_21, zs12_22
81      REAL(wp) ::   zs21_11, zs21_12, zs21_21, zs21_22
82      REAL(wp) ::   zs22_11, zs22_12, zs22_21, zs22_22
[3294]83      REAL(wp), POINTER, DIMENSION(:,:) ::   zfrld, zmass, zcorl
84      REAL(wp), POINTER, DIMENSION(:,:) ::   za1ct, za2ct, zresr
85      REAL(wp), POINTER, DIMENSION(:,:) ::   zc1u, zc1v, zc2u, zc2v
86      REAL(wp), POINTER, DIMENSION(:,:) ::   zsang
87      REAL(wp), POINTER, DIMENSION(:,:) ::   zu0, zv0
88      REAL(wp), POINTER, DIMENSION(:,:) ::   zu_n, zv_n
89      REAL(wp), POINTER, DIMENSION(:,:) ::   zu_a, zv_a
90      REAL(wp), POINTER, DIMENSION(:,:) ::   zviszeta, zviseta
91      REAL(wp), POINTER, DIMENSION(:,:) ::   zzfrld, zztms
92      REAL(wp), POINTER, DIMENSION(:,:) ::   zi1, zi2, zmasst, zpresh
[888]93      !!-------------------------------------------------------------------
[3]94     
[3294]95      CALL wrk_alloc( jpi,jpj, zfrld, zmass, zcorl, za1ct, za2ct, zresr )
96      CALL wrk_alloc( jpi,jpj, zc1u , zc1v , zc2u , zc2v , zsang )
97      CALL wrk_alloc( jpi,jpj+2, zu0, zv0, zu_n, zv_n, zu_a, zv_a, zviszeta, zviseta, kjstart = 0 )
98      CALL wrk_alloc( jpi,jpj+2, zzfrld, zztms, zi1, zi2, zmasst, zpresh, kjstart = 0 )
99
[77]100      !  Store initial velocities
[888]101      !  ----------------
[2528]102      zztms(:,0    ) = 0._wp        ;   zzfrld(:,0    ) = 0._wp
103      zztms(:,jpj+1) = 0._wp        ;   zzfrld(:,jpj+1) = 0._wp
104      zu0  (:,0    ) = 0._wp        ;   zv0   (:,0    ) = 0._wp
105      zu0  (:,jpj+1) = 0._wp        ;   zv0   (:,jpj+1) = 0._wp
106      zztms(:,1:jpj) = tms  (:,:)   ;   zzfrld(:,1:jpj) = frld (:,:)
107      zu0  (:,1:jpj) = u_ice(:,:)   ;   zv0   (:,1:jpj) = v_ice(:,:)
108      zu_a (:, :   ) = zu0  (:,:)   ;   zv_a  (:, :   ) = zv0  (:,:)
109      zu_n (:, :   ) = zu0  (:,:)   ;   zv_n  (:, :   ) = zv0  (:,:)
[3]110
[888]111!i
[2528]112      zi1   (:,:) = 0._wp
113      zi2   (:,:) = 0._wp
114      zpresh(:,:) = 0._wp
115      zmasst(:,:) = 0._wp
[888]116!i
117!!gm violant
[2528]118      zfrld(:,:) =0._wp
119      zcorl(:,:) =0._wp
120      zmass(:,:) =0._wp
121      za1ct(:,:) =0._wp
122      za2ct(:,:) =0._wp
[888]123!!gm end
124
[2528]125      zviszeta(:,:) = 0._wp
126      zviseta (:,:) = 0._wp
[888]127
[2528]128!i    zviszeta(:,0    ) = 0._wp    ;    zviseta(:,0    ) = 0._wp
129!i    zviszeta(:,jpj  ) = 0._wp    ;    zviseta(:,jpj  ) = 0._wp
130!i    zviszeta(:,jpj+1) = 0._wp    ;    zviseta(:,jpj+1) = 0._wp
[888]131
132
[717]133      ! Ice mass, ice strength, and wind stress at the center            |
134      ! of the grid squares.                                             |
[77]135      !-------------------------------------------------------------------
[3]136
[888]137!CDIR NOVERRCHK
[77]138      DO jj = k_j1 , k_jpj-1
[888]139!CDIR NOVERRCHK
[3]140         DO ji = 1 , jpi
[888]141            ! only the sinus changes its sign with the hemisphere
[2528]142            zsang(ji,jj)  = SIGN( 1._wp, fcor(ji,jj) ) * sangvg   ! only the sinus changes its sign with the hemisphere
[888]143            !
144            zmasst(ji,jj) = tms(ji,jj) * ( rhosn * hsnm(ji,jj) + rhoic * hicm(ji,jj) )
[3]145            zpresh(ji,jj) = tms(ji,jj) *  pstarh * hicm(ji,jj) * EXP( -c_rhg * frld(ji,jj) )
[888]146!!gm  :: stress given at I-point (F-point for the ocean) only compute the ponderation with the ice fraction (1-frld)
[2528]147            zi1(ji,jj)    = tms(ji,jj) * ( 1._wp - frld(ji,jj) )
148            zi2(ji,jj)    = tms(ji,jj) * ( 1._wp - frld(ji,jj) )
[3]149         END DO
150      END DO
151
[717]152
[3]153      !---------------------------------------------------------------------------
[717]154      !  Wind stress, coriolis and mass terms at the corners of the grid squares |
155      !  Gradient of ice strenght.                                               |
156      !---------------------------------------------------------------------------
[3]157         
[77]158      DO jj = k_j1+1, k_jpj-1
[1774]159         DO ji = 2, jpi    ! NO vector opt.
[888]160            zstms = zztms(ji,jj  ) * wght(ji,jj,2,2) + zztms(ji-1,jj  ) * wght(ji,jj,1,2)   &
161               &  + zztms(ji,jj-1) * wght(ji,jj,2,1) + zztms(ji-1,jj-1) * wght(ji,jj,1,1)
[2528]162            zusw  = 1._wp / MAX( zstms, epsd )
[3]163
[888]164            zt11 = zztms(ji  ,jj  ) * zzfrld(ji  ,jj  ) 
165            zt12 = zztms(ji-1,jj  ) * zzfrld(ji-1,jj  ) 
166            zt21 = zztms(ji  ,jj-1) * zzfrld(ji  ,jj-1) 
167            zt22 = zztms(ji-1,jj-1) * zzfrld(ji-1,jj-1)
[3]168
[717]169            ! Leads area.
170            zfrld(ji,jj) =  (  zt11 * wght(ji,jj,2,2) + zt12 * wght(ji,jj,1,2)   &
171               &             + zt21 * wght(ji,jj,2,1) + zt22 * wght(ji,jj,1,1) ) * zusw
[3]172
[888]173            ! Mass and coriolis coeff. at I-point
174            zmass(ji,jj) = ( zmasst(ji,jj  ) * wght(ji,jj,2,2) + zmasst(ji-1,jj  ) * wght(ji,jj,1,2)   &
175               &           + zmasst(ji,jj-1) * wght(ji,jj,2,1) + zmasst(ji-1,jj-1) * wght(ji,jj,1,1) ) * zusw
[1569]176            zcorl(ji,jj) = zmass(ji,jj) &
177               &           *( fcor(ji,jj  ) * wght(ji,jj,2,2) + fcor(ji-1,jj  )*wght(ji,jj,1,2)   &
178               &            + fcor(ji,jj-1) * wght(ji,jj,2,1) + fcor(ji-1,jj-1)*wght(ji,jj,1,1) ) * zusw
[717]179
[700]180            ! Wind stress.
[1469]181            ! always provide stress at I-point
[888]182            ztagnx = ( zi1(ji,jj  ) * wght(ji,jj,2,2) + zi1(ji-1,jj  ) * wght(ji,jj,1,2)   &
[1469]183               &     + zi1(ji,jj-1) * wght(ji,jj,2,1) + zi1(ji-1,jj-1) * wght(ji,jj,1,1) ) * zusw * utau_ice(ji,jj)
[888]184            ztagny = ( zi2(ji,jj  ) * wght(ji,jj,2,2) + zi2(ji-1,jj  ) * wght(ji,jj,1,2)   &
[1469]185               &     + zi2(ji,jj-1) * wght(ji,jj,2,1) + zi2(ji-1,jj-1) * wght(ji,jj,1,1) ) * zusw * vtau_ice(ji,jj)
[700]186
[3]187            ! Gradient of ice strength
188            zgphsx =   ( alambd(ji,jj,2,2,2,1) - alambd(ji,jj,2,1,2,1) ) * zpresh(ji  ,jj-1)   &
189               &     + ( alambd(ji,jj,2,2,2,2) - alambd(ji,jj,2,1,2,2) ) * zpresh(ji  ,jj  )   &
190               &     - ( alambd(ji,jj,2,2,1,1) + alambd(ji,jj,2,1,1,1) ) * zpresh(ji-1,jj-1)   &
191               &     - ( alambd(ji,jj,2,2,1,2) + alambd(ji,jj,2,1,1,2) ) * zpresh(ji-1,jj  )
192
193            zgphsy = - ( alambd(ji,jj,1,1,2,1) + alambd(ji,jj,1,2,2,1) ) * zpresh(ji  ,jj-1)   &
194               &     - ( alambd(ji,jj,1,1,1,1) + alambd(ji,jj,1,2,1,1) ) * zpresh(ji-1,jj-1)   &
195               &     + ( alambd(ji,jj,1,1,2,2) - alambd(ji,jj,1,2,2,2) ) * zpresh(ji  ,jj  )   &
196               &     + ( alambd(ji,jj,1,1,1,2) - alambd(ji,jj,1,2,1,2) ) * zpresh(ji-1,jj  )
197
[1711]198            ! Gradient of the sea surface height
199            zgsshx =  (   (ssh_m(ji  ,jj  ) - ssh_m(ji-1,jj  ))/e1u(ji-1,jj  )   &
[2528]200               &       +  (ssh_m(ji  ,jj-1) - ssh_m(ji-1,jj-1))/e1u(ji-1,jj-1)   ) * 0.5_wp
[1711]201            zgsshy =  (   (ssh_m(ji  ,jj  ) - ssh_m(ji  ,jj-1))/e2v(ji  ,jj-1)   &
[2528]202               &       +  (ssh_m(ji-1,jj  ) - ssh_m(ji-1,jj-1))/e2v(ji-1,jj-1)   ) * 0.5_wp
[1711]203
[3]204            ! Computation of the velocity field taking into account the ice-ice interaction.                                 
[888]205            ! Terms that are independent of the ice velocity field.
[1711]206            za1ct(ji,jj) = ztagnx - zmass(ji,jj) * grav * zgsshx - zgphsx
207            za2ct(ji,jj) = ztagny - zmass(ji,jj) * grav * zgsshy - zgphsy
[3]208         END DO
209      END DO
210
211
212      ! SOLUTION OF THE MOMENTUM EQUATION.
213      !------------------------------------------
214      !                                                   ! ==================== !
215      DO iter = 1 , 2 * nbiter                            !    loop over iter    !
216         !                                                ! ==================== !       
217         zindu = MOD( iter , 2 )
[2528]218         zusdtp = ( zindu * 2._wp + ( 1._wp - zindu ) * 1._wp )  * REAL( nbiter ) / rdt_ice
[3]219
220         ! Computation of free drift field for free slip boundary conditions.
221
[888]222!CDIR NOVERRCHK
223         DO jj = k_j1, k_jpj-1
224!CDIR NOVERRCHK
225            DO ji = 1, fs_jpim1
226               !- Rate of strain tensor.
227               zt11 =   akappa(ji,jj,1,1) * ( zu_a(ji+1,jj) + zu_a(ji+1,jj+1) - zu_a(ji,jj  ) - zu_a(ji  ,jj+1) )  &
228                  &   + akappa(ji,jj,1,2) * ( zv_a(ji+1,jj) + zv_a(ji+1,jj+1) + zv_a(ji,jj  ) + zv_a(ji  ,jj+1) )
229               zt12 = - akappa(ji,jj,2,2) * ( zu_a(ji  ,jj) + zu_a(ji+1,jj  ) - zu_a(ji,jj+1) - zu_a(ji+1,jj+1) )  &
230                  &   - akappa(ji,jj,2,1) * ( zv_a(ji  ,jj) + zv_a(ji+1,jj  ) + zv_a(ji,jj+1) + zv_a(ji+1,jj+1) )
231               zt22 = - akappa(ji,jj,2,2) * ( zv_a(ji  ,jj) + zv_a(ji+1,jj  ) - zv_a(ji,jj+1) - zv_a(ji+1,jj+1) )  &
232                  &   + akappa(ji,jj,2,1) * ( zu_a(ji  ,jj) + zu_a(ji+1,jj  ) + zu_a(ji,jj+1) + zu_a(ji+1,jj+1) )
233               zt21 =   akappa(ji,jj,1,1) * ( zv_a(ji+1,jj) + zv_a(ji+1,jj+1) - zv_a(ji,jj  ) - zv_a(ji  ,jj+1) )  &
234                  &   - akappa(ji,jj,1,2) * ( zu_a(ji+1,jj) + zu_a(ji+1,jj+1) + zu_a(ji,jj  ) + zu_a(ji  ,jj+1) )
[3]235
[888]236               !- Rate of strain tensor.
237               zdgp = zt11 + zt22
238               zdgi = zt12 + zt21
239               ztrace2 = zdgp * zdgp 
[2528]240               zdeter  = zt11 * zt22 - 0.25_wp * zdgi * zdgi
[3]241
[888]242               !  Creep limit depends on the size of the grid.
[2528]243               zdelta = MAX( SQRT( ztrace2 + ( ztrace2 - 4._wp * zdeter ) * usecc2 ),  creepl)
[3]244
[888]245               !-  Computation of viscosities.
246               zviszeta(ji,jj) = MAX( zpresh(ji,jj) / zdelta, etamn )
247               zviseta (ji,jj) = zviszeta(ji,jj) * usecc2
248            END DO
249         END DO
[3]250
[888]251         !-  Determination of zc1u, zc2u, zc1v and zc2v.
252         DO jj = k_j1+1, k_jpj-1
[1347]253            DO ji = 2, fs_jpim1   ! NO vector opt.
[888]254               !* zc1u , zc2v
[2528]255               zvis11 = 2._wp * zviseta (ji-1,jj-1) + dm
256               zvis12 =         zviseta (ji-1,jj-1) + dm
257               zvis21 =         zviseta (ji-1,jj-1)
258               zvis22 =         zviszeta(ji-1,jj-1) - zviseta(ji-1,jj-1)
[888]259               zdiag  = zvis22 * ( akappa(ji-1,jj-1,1,1) + akappa(ji-1,jj-1,2,1) )
260               zs11_11 =  zvis11 * akappa(ji-1,jj-1,1,1) + zdiag
261               zs12_11 =  zvis12 * akappa(ji-1,jj-1,2,2) - zvis21 * akappa(ji-1,jj-1,1,2)
262               zs21_11 = -zvis12 * akappa(ji-1,jj-1,1,2) + zvis21 * akappa(ji-1,jj-1,2,2)
263               zs22_11 =  zvis11 * akappa(ji-1,jj-1,2,1) + zdiag
[3]264
[2528]265               zvis11 = 2._wp * zviseta (ji,jj-1) + dm
266               zvis22 =         zviszeta(ji,jj-1) - zviseta(ji,jj-1)
267               zvis12 =         zviseta (ji,jj-1) + dm
268               zvis21 =         zviseta (ji,jj-1)
[888]269               zdiag = zvis22 * ( -akappa(ji,jj-1,1,1) + akappa(ji,jj-1,2,1) )
270               zs11_21 = -zvis11 * akappa(ji,jj-1,1,1) + zdiag
271               zs12_21 =  zvis12 * akappa(ji,jj-1,2,2) - zvis21 * akappa(ji,jj-1,1,2)
272               zs22_21 =  zvis11 * akappa(ji,jj-1,2,1) + zdiag
273               zs21_21 = -zvis12 * akappa(ji,jj-1,1,2) + zvis21 * akappa(ji,jj-1,2,2)
[3]274
[2528]275               zvis11 = 2._wp * zviseta (ji-1,jj) + dm
276               zvis22 =         zviszeta(ji-1,jj) - zviseta(ji-1,jj)
277               zvis12 =         zviseta (ji-1,jj) + dm
278               zvis21 =         zviseta (ji-1,jj)
279               zdiag  = zvis22 * ( akappa(ji-1,jj,1,1) + akappa(ji-1,jj,2,1) )
[888]280               zs11_12 =  zvis11 * akappa(ji-1,jj,1,1) + zdiag
281               zs12_12 = -zvis12 * akappa(ji-1,jj,2,2) - zvis21 * akappa(ji-1,jj,1,2)
282               zs22_12 =  zvis11 * akappa(ji-1,jj,2,1) + zdiag
283               zs21_12 = -zvis12 * akappa(ji-1,jj,1,2) - zvis21 * akappa(ji-1,jj,2,2)
[3]284
[2528]285               zvis11 = 2._wp * zviseta (ji,jj) + dm
286               zvis22 =         zviszeta(ji,jj) - zviseta(ji,jj)
287               zvis12 =         zviseta (ji,jj) + dm
288               zvis21 =         zviseta (ji,jj)
[888]289               zdiag = zvis22 * ( -akappa(ji,jj,1,1) + akappa(ji,jj,2,1) )
290               zs11_22 = -zvis11 * akappa(ji,jj,1,1) + zdiag
291               zs12_22 = -zvis12 * akappa(ji,jj,2,2) - zvis21 * akappa(ji,jj,1,2)
292               zs22_22 =  zvis11 * akappa(ji,jj,2,1) + zdiag
293               zs21_22 = -zvis12 * akappa(ji,jj,1,2) - zvis21 * akappa(ji,jj,2,2)
[3]294
[888]295               zc1u(ji,jj) = + alambd(ji,jj,2,2,2,1) * zs11_21 + alambd(ji,jj,2,2,2,2) * zs11_22   &
296                  &          - alambd(ji,jj,2,2,1,1) * zs11_11 - alambd(ji,jj,2,2,1,2) * zs11_12   &
297                  &          - alambd(ji,jj,1,1,2,1) * zs12_21 - alambd(ji,jj,1,1,1,1) * zs12_11   &
298                  &          + alambd(ji,jj,1,1,2,2) * zs12_22 + alambd(ji,jj,1,1,1,2) * zs12_12   &
299                  &          + alambd(ji,jj,1,2,1,1) * zs21_11 + alambd(ji,jj,1,2,2,1) * zs21_21   &
300                  &          + alambd(ji,jj,1,2,1,2) * zs21_12 + alambd(ji,jj,1,2,2,2) * zs21_22   &
301                  &          - alambd(ji,jj,2,1,1,1) * zs22_11 - alambd(ji,jj,2,1,2,1) * zs22_21   &
302                  &          - alambd(ji,jj,2,1,1,2) * zs22_12 - alambd(ji,jj,2,1,2,2) * zs22_22
[3]303
[888]304               zc2u(ji,jj) = + alambd(ji,jj,2,2,2,1) * zs21_21 + alambd(ji,jj,2,2,2,2) * zs21_22   &
305                  &          - alambd(ji,jj,2,2,1,1) * zs21_11 - alambd(ji,jj,2,2,1,2) * zs21_12   &
306                  &          - alambd(ji,jj,1,1,2,1) * zs22_21 - alambd(ji,jj,1,1,1,1) * zs22_11   &
307                  &          + alambd(ji,jj,1,1,2,2) * zs22_22 + alambd(ji,jj,1,1,1,2) * zs22_12   &
308                  &          - alambd(ji,jj,1,2,1,1) * zs11_11 - alambd(ji,jj,1,2,2,1) * zs11_21   &
309                  &          - alambd(ji,jj,1,2,1,2) * zs11_12 - alambd(ji,jj,1,2,2,2) * zs11_22   &
310                  &          + alambd(ji,jj,2,1,1,1) * zs12_11 + alambd(ji,jj,2,1,2,1) * zs12_21   &
311                  &          + alambd(ji,jj,2,1,1,2) * zs12_12 + alambd(ji,jj,2,1,2,2) * zs12_22
[3]312
[888]313               !* zc1v , zc2v.
[2528]314               zvis11 = 2._wp * zviseta (ji-1,jj-1) + dm
315               zvis22 =         zviszeta(ji-1,jj-1) - zviseta(ji-1,jj-1)
316               zvis12 =         zviseta (ji-1,jj-1) + dm
317               zvis21 =         zviseta (ji-1,jj-1)
[888]318               zdiag = zvis22 * ( akappa(ji-1,jj-1,1,2) + akappa(ji-1,jj-1,2,2) )
319               zs11_11 =  zvis11 * akappa(ji-1,jj-1,1,2) + zdiag
320               zs12_11 = -zvis12 * akappa(ji-1,jj-1,2,1) + zvis21 * akappa(ji-1,jj-1,1,1)
321               zs22_11 =  zvis11 * akappa(ji-1,jj-1,2,2) + zdiag
322               zs21_11 =  zvis12 * akappa(ji-1,jj-1,1,1) - zvis21 * akappa(ji-1,jj-1,2,1)
[3]323 
[2528]324               zvis11 = 2._wp * zviseta (ji,jj-1) + dm
325               zvis22 =         zviszeta(ji,jj-1) - zviseta(ji,jj-1)
326               zvis12 =         zviseta (ji,jj-1) + dm
327               zvis21 =         zviseta (ji,jj-1)
[888]328               zdiag = zvis22 * ( akappa(ji,jj-1,1,2) + akappa(ji,jj-1,2,2) )
329               zs11_21 =  zvis11 * akappa(ji,jj-1,1,2) + zdiag
330               zs12_21 = -zvis12 * akappa(ji,jj-1,2,1) - zvis21 * akappa(ji,jj-1,1,1)
331               zs22_21 =  zvis11 * akappa(ji,jj-1,2,2) + zdiag
332               zs21_21 = -zvis12 * akappa(ji,jj-1,1,1) - zvis21 * akappa(ji,jj-1,2,1)
[3]333
[2528]334               zvis11 = 2._wp * zviseta (ji-1,jj) + dm
335               zvis22 =         zviszeta(ji-1,jj) - zviseta(ji-1,jj)
336               zvis12 =         zviseta (ji-1,jj) + dm
337               zvis21 =         zviseta (ji-1,jj)
[888]338               zdiag = zvis22 * ( akappa(ji-1,jj,1,2) - akappa(ji-1,jj,2,2) )
339               zs11_12 =  zvis11 * akappa(ji-1,jj,1,2) + zdiag
340               zs12_12 = -zvis12 * akappa(ji-1,jj,2,1) + zvis21 * akappa(ji-1,jj,1,1)
341               zs22_12 = -zvis11 * akappa(ji-1,jj,2,2) + zdiag
342               zs21_12 =  zvis12 * akappa(ji-1,jj,1,1) - zvis21 * akappa(ji-1,jj,2,1)
[3]343
[2528]344               zvis11 = 2._wp * zviseta (ji,jj) + dm
345               zvis22 =         zviszeta(ji,jj) - zviseta(ji,jj)
346               zvis12 =         zviseta (ji,jj) + dm
347               zvis21 =         zviseta (ji,jj)
[888]348               zdiag = zvis22 * ( akappa(ji,jj,1,2) - akappa(ji,jj,2,2) )
349               zs11_22 =  zvis11 * akappa(ji,jj,1,2) + zdiag
350               zs12_22 = -zvis12 * akappa(ji,jj,2,1) - zvis21 * akappa(ji,jj,1,1)
351               zs22_22 = -zvis11 * akappa(ji,jj,2,2) + zdiag
352               zs21_22 = -zvis12 * akappa(ji,jj,1,1) - zvis21 * akappa(ji,jj,2,1)
[3]353
[888]354               zc1v(ji,jj) = + alambd(ji,jj,2,2,2,1) * zs11_21 + alambd(ji,jj,2,2,2,2) * zs11_22   &
355                  &          - alambd(ji,jj,2,2,1,1) * zs11_11 - alambd(ji,jj,2,2,1,2) * zs11_12   &
356                  &          - alambd(ji,jj,1,1,2,1) * zs12_21 - alambd(ji,jj,1,1,1,1) * zs12_11   &
357                  &          + alambd(ji,jj,1,1,2,2) * zs12_22 + alambd(ji,jj,1,1,1,2) * zs12_12   &
358                  &          + alambd(ji,jj,1,2,1,1) * zs21_11 + alambd(ji,jj,1,2,2,1) * zs21_21   &
359                  &          + alambd(ji,jj,1,2,1,2) * zs21_12 + alambd(ji,jj,1,2,2,2) * zs21_22   &
360                  &          - alambd(ji,jj,2,1,1,1) * zs22_11 - alambd(ji,jj,2,1,2,1) * zs22_21   &
361                  &          - alambd(ji,jj,2,1,1,2) * zs22_12 - alambd(ji,jj,2,1,2,2) * zs22_22
[3]362
[888]363               zc2v(ji,jj) = + alambd(ji,jj,2,2,2,1) * zs21_21 + alambd(ji,jj,2,2,2,2) * zs21_22   &
364                  &          - alambd(ji,jj,2,2,1,1) * zs21_11 - alambd(ji,jj,2,2,1,2) * zs21_12   &
365                  &          - alambd(ji,jj,1,1,2,1) * zs22_21 - alambd(ji,jj,1,1,1,1) * zs22_11   &
366                  &          + alambd(ji,jj,1,1,2,2) * zs22_22 + alambd(ji,jj,1,1,1,2) * zs22_12   &
367                  &          - alambd(ji,jj,1,2,1,1) * zs11_11 - alambd(ji,jj,1,2,2,1) * zs11_21   &
368                  &          - alambd(ji,jj,1,2,1,2) * zs11_12 - alambd(ji,jj,1,2,2,2) * zs11_22   &
369                  &          + alambd(ji,jj,2,1,1,1) * zs12_11 + alambd(ji,jj,2,1,2,1) * zs12_21   &
370                  &          + alambd(ji,jj,2,1,1,2) * zs12_12 + alambd(ji,jj,2,1,2,2) * zs12_22
[3]371            END DO
[888]372         END DO
[3]373
[888]374         ! GAUSS-SEIDEL method
375         !                                                      ! ================ !
376iflag:   DO jter = 1 , nbitdr                                   !    Relaxation    !
377            !                                                   ! ================ !
378!CDIR NOVERRCHK
[77]379            DO jj = k_j1+1, k_jpj-1
[888]380!CDIR NOVERRCHK
[1347]381               DO ji = 2, fs_jpim1   ! NO vector opt.
[888]382                  !
383                  ze11 =   akappa(ji,jj-1,1,1) * zu_a(ji+1,jj) + akappa(ji,jj-1,1,2) * zv_a(ji+1,jj)
384                  ze12 = + akappa(ji,jj-1,2,2) * zu_a(ji+1,jj) - akappa(ji,jj-1,2,1) * zv_a(ji+1,jj)
385                  ze22 = + akappa(ji,jj-1,2,2) * zv_a(ji+1,jj) + akappa(ji,jj-1,2,1) * zu_a(ji+1,jj)
386                  ze21 =   akappa(ji,jj-1,1,1) * zv_a(ji+1,jj) - akappa(ji,jj-1,1,2) * zu_a(ji+1,jj)
[2528]387                  zvis11 = 2._wp * zviseta (ji,jj-1) + dm
388                  zvis22 =         zviszeta(ji,jj-1) - zviseta(ji,jj-1)
389                  zvis12 =         zviseta (ji,jj-1) + dm
390                  zvis21 =         zviseta (ji,jj-1)
[3]391                  zdiag = zvis22 * ( ze11 + ze22 )
[888]392                  zs11_21 =  zvis11 * ze11 + zdiag
393                  zs12_21 =  zvis12 * ze12 + zvis21 * ze21
394                  zs22_21 =  zvis11 * ze22 + zdiag
395                  zs21_21 =  zvis12 * ze21 + zvis21 * ze12
[3]396
[888]397                  ze11 =   akappa(ji-1,jj,1,1) * ( zu_a(ji  ,jj+1) - zu_a(ji-1,jj+1) )   &
398                     &   + akappa(ji-1,jj,1,2) * ( zv_a(ji  ,jj+1) + zv_a(ji-1,jj+1) )
399                  ze12 = + akappa(ji-1,jj,2,2) * ( zu_a(ji-1,jj+1) + zu_a(ji  ,jj+1) )   &
400                     &   - akappa(ji-1,jj,2,1) * ( zv_a(ji-1,jj+1) + zv_a(ji  ,jj+1) )
401                  ze22 = + akappa(ji-1,jj,2,2) * ( zv_a(ji-1,jj+1) + zv_a(ji  ,jj+1) )   &
402                     &   + akappa(ji-1,jj,2,1) * ( zu_a(ji-1,jj+1) + zu_a(ji  ,jj+1) )
403                  ze21 =   akappa(ji-1,jj,1,1) * ( zv_a(ji  ,jj+1) - zv_a(ji-1,jj+1) )   &
404                     &   - akappa(ji-1,jj,1,2) * ( zu_a(ji  ,jj+1) + zu_a(ji-1,jj+1) )
[2528]405                  zvis11 = 2._wp * zviseta (ji-1,jj) + dm
406                  zvis22 =         zviszeta(ji-1,jj) - zviseta(ji-1,jj)
407                  zvis12 =         zviseta (ji-1,jj) + dm
408                  zvis21 =         zviseta (ji-1,jj)
[3]409                  zdiag = zvis22 * ( ze11 + ze22 )
[888]410                  zs11_12 =  zvis11 * ze11 + zdiag
411                  zs12_12 =  zvis12 * ze12 + zvis21 * ze21
412                  zs22_12 =  zvis11 * ze22 + zdiag
413                  zs21_12 =  zvis12 * ze21 + zvis21 * ze12
[3]414
[888]415                  ze11 =   akappa(ji,jj,1,1) * ( zu_a(ji+1,jj) + zu_a(ji+1,jj+1) - zu_a(ji  ,jj+1) )   &
416                     &   + akappa(ji,jj,1,2) * ( zv_a(ji+1,jj) + zv_a(ji+1,jj+1) + zv_a(ji  ,jj+1) )
417                  ze12 = - akappa(ji,jj,2,2) * ( zu_a(ji+1,jj) - zu_a(ji  ,jj+1) - zu_a(ji+1,jj+1) )   &
418                     &   - akappa(ji,jj,2,1) * ( zv_a(ji+1,jj) + zv_a(ji  ,jj+1) + zv_a(ji+1,jj+1) )
419                  ze22 = - akappa(ji,jj,2,2) * ( zv_a(ji+1,jj) - zv_a(ji  ,jj+1) - zv_a(ji+1,jj+1) )   &
420                     &   + akappa(ji,jj,2,1) * ( zu_a(ji+1,jj) + zu_a(ji  ,jj+1) + zu_a(ji+1,jj+1) )
421                  ze21 =   akappa(ji,jj,1,1) * ( zv_a(ji+1,jj) + zv_a(ji+1,jj+1) - zv_a(ji  ,jj+1) )   &
422                     &   - akappa(ji,jj,1,2) * ( zu_a(ji+1,jj) + zu_a(ji+1,jj+1) + zu_a(ji  ,jj+1) )
[2528]423                  zvis11 = 2._wp * zviseta (ji,jj) + dm
424                  zvis22 =         zviszeta(ji,jj) - zviseta(ji,jj)
425                  zvis12 =         zviseta (ji,jj) + dm
426                  zvis21 =         zviseta (ji,jj)
[3]427                  zdiag = zvis22 * ( ze11 + ze22 )
[888]428                  zs11_22 =  zvis11 * ze11 + zdiag
429                  zs12_22 =  zvis12 * ze12 + zvis21 * ze21
430                  zs22_22 =  zvis11 * ze22 + zdiag
431                  zs21_22 =  zvis12 * ze21 + zvis21 * ze12
[3]432
[888]433            ! 2nd part
434                  ze11 =   akappa(ji-1,jj-1,1,1) * ( zu_a(ji  ,jj-1) - zu_a(ji-1,jj-1) - zu_a(ji-1,jj) )   &
435                     &   + akappa(ji-1,jj-1,1,2) * ( zv_a(ji  ,jj-1) + zv_a(ji-1,jj-1) + zv_a(ji-1,jj) )
436                  ze12 = - akappa(ji-1,jj-1,2,2) * ( zu_a(ji-1,jj-1) + zu_a(ji  ,jj-1) - zu_a(ji-1,jj) )   &
437                     &   - akappa(ji-1,jj-1,2,1) * ( zv_a(ji-1,jj-1) + zv_a(ji  ,jj-1) + zv_a(ji-1,jj) )
438                  ze22 = - akappa(ji-1,jj-1,2,2) * ( zv_a(ji-1,jj-1) + zv_a(ji  ,jj-1) - zv_a(ji-1,jj) )   &
439                     &   + akappa(ji-1,jj-1,2,1) * ( zu_a(ji-1,jj-1) + zu_a(ji  ,jj-1) + zu_a(ji-1,jj) )
440                  ze21 =   akappa(ji-1,jj-1,1,1) * ( zv_a(ji  ,jj-1) - zv_a(ji-1,jj-1) - zv_a(ji-1,jj) )   &
441                     &  -  akappa(ji-1,jj-1,1,2) * ( zu_a(ji  ,jj-1) + zu_a(ji-1,jj-1) + zu_a(ji-1,jj) )
[2528]442                  zvis11 = 2._wp * zviseta (ji-1,jj-1) + dm
443                  zvis22 =         zviszeta(ji-1,jj-1) - zviseta(ji-1,jj-1)
444                  zvis12 =         zviseta (ji-1,jj-1) + dm
445                  zvis21 =         zviseta (ji-1,jj-1)
[3]446                  zdiag = zvis22 * ( ze11 + ze22 )
[888]447                  zs11_11 =  zvis11 * ze11 + zdiag
448                  zs12_11 =  zvis12 * ze12 + zvis21 * ze21
449                  zs22_11 =  zvis11 * ze22 + zdiag
450                  zs21_11 =  zvis12 * ze21 + zvis21 * ze12
[3]451
[888]452                  ze11 =   akappa(ji,jj-1,1,1) * ( zu_a(ji+1,jj-1) - zu_a(ji  ,jj-1) )   &
453                     &   + akappa(ji,jj-1,1,2) * ( zv_a(ji+1,jj-1) + zv_a(ji  ,jj-1) )
454                  ze12 = - akappa(ji,jj-1,2,2) * ( zu_a(ji  ,jj-1) + zu_a(ji+1,jj-1) )   &
455                     &   - akappa(ji,jj-1,2,1) * ( zv_a(ji  ,jj-1) + zv_a(ji+1,jj-1) )
456                  ze22 = - akappa(ji,jj-1,2,2) * ( zv_a(ji  ,jj-1) + zv_a(ji+1,jj-1) )   &
457                     &   + akappa(ji,jj-1,2,1) * ( zu_a(ji  ,jj-1) + zu_a(ji+1,jj-1) )
458                  ze21 =   akappa(ji,jj-1,1,1) * ( zv_a(ji+1,jj-1) - zv_a(ji  ,jj-1) )   &
459                     &   - akappa(ji,jj-1,1,2) * ( zu_a(ji+1,jj-1) + zu_a(ji  ,jj-1) )
[2528]460                  zvis11 = 2._wp * zviseta (ji,jj-1) + dm
461                  zvis22 =         zviszeta(ji,jj-1) - zviseta(ji,jj-1)
462                  zvis12 =         zviseta (ji,jj-1) + dm
463                  zvis21 =         zviseta (ji,jj-1)
[3]464                  zdiag = zvis22 * ( ze11 + ze22 )
[888]465                  zs11_21 =  zs11_21 + zvis11 * ze11 + zdiag
466                  zs12_21 =  zs12_21 + zvis12 * ze12 + zvis21 * ze21
467                  zs22_21 =  zs22_21 + zvis11 * ze22 + zdiag
468                  zs21_21 =  zs21_21 + zvis12 * ze21 + zvis21 * ze12
[3]469
[888]470                  ze11 = - akappa(ji-1,jj,1,1) * zu_a(ji-1,jj) + akappa(ji-1,jj,1,2) * zv_a(ji-1,jj)
471                  ze12 = - akappa(ji-1,jj,2,2) * zu_a(ji-1,jj) - akappa(ji-1,jj,2,1) * zv_a(ji-1,jj)
472                  ze22 = - akappa(ji-1,jj,2,2) * zv_a(ji-1,jj) + akappa(ji-1,jj,2,1) * zu_a(ji-1,jj)
473                  ze21 = - akappa(ji-1,jj,1,1) * zv_a(ji-1,jj) - akappa(ji-1,jj,1,2) * zu_a(ji-1,jj)
[2528]474                  zvis11 = 2._wp * zviseta (ji-1,jj) + dm
475                  zvis22 =         zviszeta(ji-1,jj) - zviseta(ji-1,jj)
476                  zvis12 =         zviseta (ji-1,jj) + dm
477                  zvis21 =         zviseta (ji-1,jj)
[3]478                  zdiag = zvis22 * ( ze11 + ze22 )
[888]479                  zs11_12 =  zs11_12 + zvis11 * ze11 + zdiag
480                  zs12_12 =  zs12_12 + zvis12 * ze12 + zvis21 * ze21
481                  zs22_12 =  zs22_12 + zvis11 * ze22 + zdiag
482                  zs21_12 =  zs21_12 + zvis12 * ze21 + zvis21 * ze12
[3]483
[888]484                  zd1 = + alambd(ji,jj,2,2,2,1) * zs11_21 + alambd(ji,jj,2,2,2,2) * zs11_22  &
485                     &  - alambd(ji,jj,2,2,1,1) * zs11_11 - alambd(ji,jj,2,2,1,2) * zs11_12  &
486                     &  - alambd(ji,jj,1,1,2,1) * zs12_21 - alambd(ji,jj,1,1,1,1) * zs12_11  &
487                     &  + alambd(ji,jj,1,1,2,2) * zs12_22 + alambd(ji,jj,1,1,1,2) * zs12_12  &
488                     &  + alambd(ji,jj,1,2,1,1) * zs21_11 + alambd(ji,jj,1,2,2,1) * zs21_21  &
489                     &  + alambd(ji,jj,1,2,1,2) * zs21_12 + alambd(ji,jj,1,2,2,2) * zs21_22  &
490                     &  - alambd(ji,jj,2,1,1,1) * zs22_11 - alambd(ji,jj,2,1,2,1) * zs22_21  &
491                     &  - alambd(ji,jj,2,1,1,2) * zs22_12 - alambd(ji,jj,2,1,2,2) * zs22_22
[3]492
[888]493                  zd2 = + alambd(ji,jj,2,2,2,1) * zs21_21 + alambd(ji,jj,2,2,2,2) * zs21_22  &
494                     &  - alambd(ji,jj,2,2,1,1) * zs21_11 - alambd(ji,jj,2,2,1,2) * zs21_12  &
495                     &  - alambd(ji,jj,1,1,2,1) * zs22_21 - alambd(ji,jj,1,1,1,1) * zs22_11  &
496                     &  + alambd(ji,jj,1,1,2,2) * zs22_22 + alambd(ji,jj,1,1,1,2) * zs22_12  &
497                     &  - alambd(ji,jj,1,2,1,1) * zs11_11 - alambd(ji,jj,1,2,2,1) * zs11_21  &
498                     &  - alambd(ji,jj,1,2,1,2) * zs11_12 - alambd(ji,jj,1,2,2,2) * zs11_22  &
499                     &  + alambd(ji,jj,2,1,1,1) * zs12_11 + alambd(ji,jj,2,1,2,1) * zs12_21  &
500                     &  + alambd(ji,jj,2,1,1,2) * zs12_12 + alambd(ji,jj,2,1,2,2) * zs12_22
[3]501
[1470]502                  zur     = zu_a(ji,jj) - u_oce(ji,jj)
503                  zvr     = zv_a(ji,jj) - v_oce(ji,jj)
[888]504!!!!
[2528]505                  zmod    = SQRT( zur*zur + zvr*zvr ) * ( 1._wp - zfrld(ji,jj) )
[888]506                  za      = rhoco * zmod
507!!!!
[2528]508!!gm chg resul    za      = rhoco * SQRT( zur*zur + zvr*zvr ) * ( 1._wp - zfrld(ji,jj) )
[888]509                  zac     = za * cangvg
510                  zmpzas  = alpha * zcorl(ji,jj) + za * zsang(ji,jj)
511                  zmassdt = zusdtp * zmass(ji,jj)
[2528]512                  zcorlal = ( 1._wp - alpha ) * zcorl(ji,jj)
[3]513
[888]514                  za1 =  zmassdt * zu0(ji,jj) + zcorlal * zv0(ji,jj) + za1ct(ji,jj)   &
[1470]515                     &        + za * ( cangvg * u_oce(ji,jj) - zsang(ji,jj) * v_oce(ji,jj) )
[888]516                  za2 =  zmassdt * zv0(ji,jj) - zcorlal * zu0(ji,jj) + za2ct(ji,jj)   &
[1470]517                     &        + za * ( cangvg * v_oce(ji,jj) + zsang(ji,jj) * u_oce(ji,jj) )
[888]518                  zb1    = zmassdt + zac - zc1u(ji,jj)
519                  zb2    = zmpzas        - zc2u(ji,jj)
520                  zc1    = zmpzas        + zc1v(ji,jj)
521                  zc2    = zmassdt + zac - zc2v(ji,jj)
522                  zdeter = zc1 * zb2 + zc2 * zb1
523                  zden   = SIGN( rone, zdeter) / MAX( epsd , ABS( zdeter ) )
524                  zunw   = (  ( za1 + zd1 ) * zc2 + ( za2 + zd2 ) * zc1 ) * zden
525                  zvnw   = (  ( za2 + zd2 ) * zb1 - ( za1 + zd1 ) * zb2 ) * zden
[2528]526                  zmask  = ( 1._wp - MAX( rzero, SIGN( rone , 1._wp - zmass(ji,jj) ) ) ) * tmu(ji,jj)
[3]527
[888]528                  zu_n(ji,jj) = ( zu_a(ji,jj) + om * ( zunw - zu_a(ji,jj) ) * tmu(ji,jj) ) * zmask
529                  zv_n(ji,jj) = ( zv_a(ji,jj) + om * ( zvnw - zv_a(ji,jj) ) * tmu(ji,jj) ) * zmask
[3]530               END DO
531            END DO
532
[888]533            CALL lbc_lnk( zu_n(:,1:jpj), 'I', -1. )
534            CALL lbc_lnk( zv_n(:,1:jpj), 'I', -1. )
[3]535
[888]536            ! Test of Convergence
[77]537            DO jj = k_j1+1 , k_jpj-1
[888]538               zresr(:,jj) = MAX( ABS( zu_a(:,jj) - zu_n(:,jj) ) , ABS( zv_a(:,jj) - zv_n(:,jj) ) )
[3]539            END DO
[888]540            zresm = MAXVAL( zresr(1:jpi,k_j1+1:k_jpj-1) )
541!!!! this should be faster on scalar processor
542!           zresm = MAXVAL(  MAX( ABS( zu_a(1:jpi,k_j1+1:k_jpj-1) - zu_n(1:jpi,k_j1+1:k_jpj-1) ),   &
543!              &                  ABS( zv_a(1:jpi,k_j1+1:k_jpj-1) - zv_n(1:jpi,k_j1+1:k_jpj-1) ) )  )
544!!!!
[77]545            IF( lk_mpp )   CALL mpp_max( zresm )   ! max over the global domain
[3]546
[888]547            DO jj = k_j1, k_jpj
548               zu_a(:,jj) = zu_n(:,jj)
549               zv_a(:,jj) = zv_n(:,jj)
550            END DO
[3]551
[888]552            IF( zresm <= resl )   EXIT   iflag
[3]553
[888]554            !                                                   ! ================ !
555         END DO    iflag                                        !  end Relaxation  !
556         !                                                      ! ================ !
557
558         IF( zindu == 0 ) THEN      ! even iteration
559            DO jj = k_j1 , k_jpj-1
560               zu0(:,jj) = zu_a(:,jj)
561               zv0(:,jj) = zv_a(:,jj)
562            END DO
563         ENDIF
564         !                                                ! ==================== !
[3]565      END DO                                              !  end loop over iter  !
566      !                                                   ! ==================== !
567
[1470]568      u_ice(:,:) = zu_a(:,1:jpj)
569      v_ice(:,:) = zv_a(:,1:jpj)
[888]570
[258]571      IF(ln_ctl) THEN
572         WRITE(charout,FMT="('lim_rhg  : res =',D23.16, ' iter =',I4)") zresm, jter
573         CALL prt_ctl_info(charout)
[1470]574         CALL prt_ctl(tab2d_1=u_ice, clinfo1=' lim_rhg  : u_ice :', tab2d_2=v_ice, clinfo2=' v_ice :')
[3]575      ENDIF
576
[3294]577      CALL wrk_dealloc( jpi,jpj, zfrld, zmass, zcorl, za1ct, za2ct, zresr )
578      CALL wrk_dealloc( jpi,jpj, zc1u , zc1v , zc2u , zc2v , zsang )
579      CALL wrk_dealloc( jpi,jpj+2, zu0, zv0, zu_n, zv_n, zu_a, zv_a, zviszeta, zviseta, kjstart = 0 )
580      CALL wrk_dealloc( jpi,jpj+2, zzfrld, zztms, zi1, zi2, zmasst, zpresh, kjstart = 0 )
581
[821]582   END SUBROUTINE lim_rhg_2
[77]583
[3]584#else
[77]585   !!----------------------------------------------------------------------
[2528]586   !!   Default option        Dummy module      NO VP & LIM-2 sea-ice model
[77]587   !!----------------------------------------------------------------------
[3]588CONTAINS
[821]589   SUBROUTINE lim_rhg_2( k1 , k2 )       ! Dummy routine
590      WRITE(*,*) 'lim_rhg_2: You should not have seen this print! error?', k1, k2
591   END SUBROUTINE lim_rhg_2
[3]592#endif
593
[77]594   !!==============================================================================
[821]595END MODULE limrhg_2
Note: See TracBrowser for help on using the repository browser.