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.
limupdate2.F90 in branches/2013/dev_r4028_CNRS_LIM3/NEMOGCM/NEMO/LIM_SRC_3 – NEMO

source: branches/2013/dev_r4028_CNRS_LIM3/NEMOGCM/NEMO/LIM_SRC_3/limupdate2.F90 @ 4634

Last change on this file since 4634 was 4634, checked in by clem, 10 years ago

major changes in heat budget

File size: 18.9 KB
Line 
1MODULE limupdate2
2   !!======================================================================
3   !!                     ***  MODULE  limupdate2  ***
4   !!   LIM-3 : Update of sea-ice global variables at the end of the time step
5   !!======================================================================
6   !! History :  3.0  !  2006-04  (M. Vancoppenolle) Original code
7   !!----------------------------------------------------------------------
8#if defined key_lim3
9   !!----------------------------------------------------------------------
10   !!   'key_lim3'                                      LIM3 sea-ice model
11   !!----------------------------------------------------------------------
12   !!    lim_update2   : computes update of sea-ice global variables from trend terms
13   !!----------------------------------------------------------------------
14   USE limrhg          ! ice rheology
15
16   USE dom_oce
17   USE oce             ! dynamics and tracers variables
18   USE in_out_manager
19   USE sbc_oce         ! Surface boundary condition: ocean fields
20   USE sbc_ice         ! Surface boundary condition: ice fields
21   USE dom_ice
22   USE phycst          ! physical constants
23   USE ice
24   USE limdyn
25   USE limtrp
26   USE limthd
27   USE limsbc
28   USE limdiahsb
29   USE limwri
30   USE limrst
31   USE thd_ice         ! LIM thermodynamic sea-ice variables
32   USE par_ice
33   USE limitd_th
34   USE limitd_me
35   USE limvar
36   USE prtctl           ! Print control
37   USE lbclnk           ! lateral boundary condition - MPP exchanges
38   USE wrk_nemo         ! work arrays
39   USE lib_fortran     ! glob_sum
40   USE timing          ! Timing
41
42   IMPLICIT NONE
43   PRIVATE
44
45   PUBLIC   lim_update2   ! routine called by ice_step
46
47   REAL(wp)  ::   epsi10 = 1.e-10_wp   !    -       -
48   REAL(wp)  ::   epsi20 = 1.e-20_wp   
49     
50   !! * Substitutions
51#  include "vectopt_loop_substitute.h90"
52   !!----------------------------------------------------------------------
53   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
54   !! $Id: limupdate.F90 3294 2012-01-28 16:44:18Z rblod $
55   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
56   !!----------------------------------------------------------------------
57CONTAINS
58
59   SUBROUTINE lim_update2
60      !!-------------------------------------------------------------------
61      !!               ***  ROUTINE lim_update2  ***
62      !!               
63      !! ** Purpose :  Computes update of sea-ice global variables at
64      !!               the end of the time step.
65      !!               Address pathological cases
66      !!               This place is very important
67      !!               
68      !! ** Method  : 
69      !!    Ice speed from ice dynamics
70      !!    Ice thickness, Snow thickness, Temperatures, Lead fraction
71      !!      from advection and ice thermodynamics
72      !!
73      !! ** Action  : -
74      !!---------------------------------------------------------------------
75      INTEGER ::   ji, jj, jk, jl, jm    ! dummy loop indices
76      INTEGER ::   jbnd1, jbnd2
77      INTEGER ::   i_ice_switch
78      REAL(wp) ::   zindb, zindsn, zindic
79      REAL(wp) ::   zh, zdvres, zsal
80
81      REAL(wp) ::   zEs          ! specific enthalpy of snow (J/kg)
82      REAL(wp) ::   zEi          ! specific enthalpy of ice (J/kg)
83      REAL(wp) ::   zEw          ! specific enthalpy of exchanged water (J/kg)
84      REAL(wp) ::   zdE          ! specific enthalpy difference (J/kg)
85      REAL(wp) ::   zfmdt        ! exchange mass flux x time step (J/m2), >0 towards the ocean
86
87      REAL(wp) :: zchk_v_i, zchk_smv, zchk_e_i, zchk_fs, zchk_fw, zchk_ft, zchk_v_i_b, zchk_smv_b, zchk_e_i_b, zchk_fs_b, zchk_fw_b, zchk_ft_b ! Check conservation (C Rousset)
88      REAL(wp) :: zchk_vmin, zchk_amin, zchk_amax ! Check errors (C Rousset)
89      !!-------------------------------------------------------------------
90      IF( nn_timing == 1 )  CALL timing_start('limupdate2')
91
92      !----------------------------------------------------------------------------------------
93      ! 1. Computation of trend terms     
94      !----------------------------------------------------------------------------------------
95
96      ! -------------------------------
97      !- check conservation (C Rousset)
98      IF (ln_limdiahsb) THEN
99         zchk_v_i_b = glob_sum( SUM(   v_i(:,:,:)*rhoic + v_s(:,:,:)*rhosn, dim=3 ) * area(:,:) * tms(:,:) )
100         zchk_smv_b = glob_sum( SUM( smv_i(:,:,:), dim=3 ) * area(:,:) * tms(:,:) )
101         zchk_e_i_b = glob_sum( SUM(   e_i(:,:,1:nlay_i,:), dim=3 ) + SUM( e_s(:,:,1:nlay_s,:), dim=3 ) )
102         zchk_fw_b  = glob_sum( ( wfx_bog(:,:) + wfx_bom(:,:) + wfx_sum(:,:) + wfx_sni(:,:) + wfx_opw(:,:) + wfx_res(:,:) + wfx_dyn(:,:) + wfx_snw(:,:) ) * area(:,:) * tms(:,:) )
103         zchk_fs_b  = glob_sum( ( sfx_bri(:,:) + sfx_bog(:,:) + sfx_bom(:,:) + sfx_sum(:,:) + sfx_sni(:,:) + sfx_opw(:,:) + sfx_res(:,:) + sfx_dyn(:,:) ) * area(:,:) * tms(:,:) )
104         zchk_ft_b  = glob_sum( ( hfx_tot(:,:) - hfx_thd(:,:) - hfx_dyn(:,:) - hfx_res(:,:) ) * area(:,:) / unit_fac * tms(:,:) )
105      ENDIF
106      !- check conservation (C Rousset)
107      ! -------------------------------
108
109      ! zap small values
110      !-----------------
111      CALL lim_itd_me_zapsmall
112
113      CALL lim_var_glo2eqv
114
115      !--------------------------------------
116      ! 2. Review of all pathological cases
117      !--------------------------------------
118      at_i(:,:) = 0._wp
119      DO jl = 1, jpl
120         at_i(:,:) = a_i(:,:,jl) + at_i(:,:)
121      END DO
122
123      !----------------------------------------------------
124      ! 2.2) Rebin categories with thickness out of bounds
125      !----------------------------------------------------
126      DO jm = 1, jpm
127         jbnd1 = ice_cat_bounds(jm,1)
128         jbnd2 = ice_cat_bounds(jm,2)
129         IF (ice_ncat_types(jm) .GT. 1 )   CALL lim_itd_th_reb(jbnd1, jbnd2, jm)
130      END DO
131
132
133!clem debug: it is done in limthd_dh now
134!      ! Melt of snow
135!      !--------------
136!      DO jl = 1, jpl
137!         DO jj = 1, jpj
138!            DO ji = 1, jpi
139!               IF( v_s(ji,jj,jl) >= epsi20 ) THEN
140!                  ! If snow energy of melting smaller then Lf
141!                  ! Then all snow melts and heat go to the ocean
142!                  !IF ( zEs <= lfus ) THEN
143!                  IF( t_s(ji,jj,1,jl) >= rtt ) THEN
144!                     zdvres = - v_s(ji,jj,jl)
145!                     zEs    = - e_s(ji,jj,1,jl) * unit_fac / ( area(ji,jj) * MAX( v_s(ji,jj,jl), epsi20 ) )  ! snow energy of melting (J.m-3)
146!                     ! Contribution to heat flux to the ocean [W.m-2], < 0 
147!                     hfx_res(ji,jj) = hfx_res(ji,jj) - zEs * zdvres * r1_rdtice
148!                     ! Contribution to mass flux
149!                     wfx_snw(ji,jj) =  wfx_snw(ji,jj) + rhosn * zdvres * r1_rdtice
150!                     ! updates
151!                     v_s (ji,jj,jl)   = 0._wp
152!                     ht_s(ji,jj,jl)   = 0._wp
153!                     e_s (ji,jj,1,jl) = 0._wp
154!                     t_s (ji,jj,1,jl) = rtt
155!                  ENDIF
156!               ENDIF
157!            END DO
158!         END DO
159!      END DO
160!clem debug
161
162      !--- 2.12 Constrain the thickness of the smallest category above 10 cm
163      !----------------------------------------------------------------------
164      DO jm = 1, jpm
165         DO jj = 1, jpj 
166            DO ji = 1, jpi
167               jl = ice_cat_bounds(jm,1)
168               IF( v_i(ji,jj,jl) > 0._wp .AND. ht_i(ji,jj,jl) < hiclim ) THEN
169                  zh             = hiclim / ht_i(ji,jj,jl)
170                  ht_s(ji,jj,jl) = ht_s(ji,jj,jl) * zh
171                  ht_i(ji,jj,jl) = ht_i(ji,jj,jl) * zh
172                  a_i (ji,jj,jl) = a_i(ji,jj,jl)  / zh
173               ENDIF
174            END DO !ji
175         END DO !jj
176      END DO !jm
177     
178      !--- 2.13 ice concentration should not exceed amax
179      !-----------------------------------------------------
180      at_i(:,:) = 0.0
181      DO jl = 1, jpl
182         at_i(:,:) = a_i(:,:,jl) + at_i(:,:)
183      END DO
184
185      DO jl  = 1, jpl
186         DO jj = 1, jpj
187            DO ji = 1, jpi
188               IF( at_i(ji,jj) > amax .AND. a_i(ji,jj,jl) > 0._wp ) THEN
189                  a_i(ji,jj,jl)  = a_i(ji,jj,jl) * ( 1._wp - ( 1._wp - amax / at_i(ji,jj) ) )
190                  ht_i(ji,jj,jl) = v_i(ji,jj,jl) / a_i(ji,jj,jl)
191               ENDIF
192            END DO
193         END DO
194      END DO
195
196      at_i(:,:) = 0.0
197      DO jl = 1, jpl
198         at_i(:,:) = a_i(:,:,jl) + at_i(:,:)
199      END DO
200
201      ! Final thickness distribution rebinning
202      ! --------------------------------------
203      DO jm = 1, jpm
204         jbnd1 = ice_cat_bounds(jm,1)
205         jbnd2 = ice_cat_bounds(jm,2)
206         IF (ice_ncat_types(jm) .GT. 1 ) CALL lim_itd_th_reb(jbnd1, jbnd2, jm)
207         IF (ice_ncat_types(jm) .EQ. 1 ) THEN
208         ENDIF
209      END DO
210
211      ! zap small values
212      !-----------------
213      CALL lim_itd_me_zapsmall
214
215      !---------------------
216      ! 2.11) Ice salinity
217      !---------------------
218      IF (  num_sal == 2  ) THEN
219         DO jl = 1, jpl
220            DO jj = 1, jpj 
221               DO ji = 1, jpi
222                  zsal            = smv_i(ji,jj,jl)
223                  smv_i(ji,jj,jl) = sm_i(ji,jj,jl) * v_i(ji,jj,jl)
224                  ! salinity stays in bounds
225                  i_ice_switch    = 1._wp - MAX( 0._wp, SIGN( 1._wp, - v_i(ji,jj,jl) ) )
226                  smv_i(ji,jj,jl) = i_ice_switch * MAX( MIN( s_i_max * v_i(ji,jj,jl), smv_i(ji,jj,jl) ), s_i_min * v_i(ji,jj,jl) ) !+ s_i_min * ( 1._wp - i_ice_switch ) * v_i(ji,jj,jl)
227                  ! associated salt flux
228                  sfx_res(ji,jj) = sfx_res(ji,jj) - ( smv_i(ji,jj,jl) - zsal ) * rhoic * r1_rdtice
229               END DO ! ji
230            END DO ! jj
231         END DO !jl
232      ENDIF
233
234
235      ! -------------------
236      at_i(:,:) = a_i(:,:,1)
237      DO jl = 2, jpl
238         at_i(:,:) = a_i(:,:,jl) + at_i(:,:)
239      END DO
240
241      !------------------------------------------------------------------------------
242      ! 2) Corrections to avoid wrong values                                        |
243      !------------------------------------------------------------------------------
244      ! Ice drift
245      !------------
246      DO jj = 2, jpjm1
247         DO ji = 2, jpim1
248            IF ( at_i(ji,jj) .EQ. 0.0 ) THEN ! what to do if there is no ice
249               IF ( at_i(ji+1,jj) .EQ. 0.0 ) u_ice(ji,jj)   = 0.0 ! right side
250               IF ( at_i(ji-1,jj) .EQ. 0.0 ) u_ice(ji-1,jj) = 0.0 ! left side
251               IF ( at_i(ji,jj+1) .EQ. 0.0 ) v_ice(ji,jj)   = 0.0 ! upper side
252               IF ( at_i(ji,jj-1) .EQ. 0.0 ) v_ice(ji,jj-1) = 0.0 ! bottom side
253            ENDIF
254         END DO
255      END DO
256      !lateral boundary conditions
257      CALL lbc_lnk( u_ice(:,:), 'U', -1. )
258      CALL lbc_lnk( v_ice(:,:), 'V', -1. )
259      !mask velocities
260      u_ice(:,:) = u_ice(:,:) * tmu(:,:)
261      v_ice(:,:) = v_ice(:,:) * tmv(:,:)
262 
263
264      ! -------------------------------------------------
265      ! Diagnostics
266      ! -------------------------------------------------
267      d_a_i_thd(:,:,:)   = a_i(:,:,:)   - old_a_i(:,:,:) 
268      d_v_s_thd(:,:,:)   = v_s(:,:,:)   - old_v_s(:,:,:)
269      d_v_i_thd(:,:,:)   = v_i(:,:,:)   - old_v_i(:,:,:) 
270      d_e_s_thd(:,:,:,:) = e_s(:,:,:,:) - old_e_s(:,:,:,:) 
271      d_e_i_thd(:,:,1:nlay_i,:) = e_i(:,:,1:nlay_i,:) - old_e_i(:,:,1:nlay_i,:)
272      !?? d_oa_i_thd(:,:,:)  = oa_i (:,:,:) - old_oa_i (:,:,:)
273      d_smv_i_thd(:,:,:) = 0._wp
274      IF( num_sal == 2 )   d_smv_i_thd(:,:,:) = smv_i(:,:,:) - old_smv_i(:,:,:)
275      ! diag only (clem)
276      dv_dt_thd(:,:,:) = d_v_i_thd(:,:,:) * r1_rdtice * rday
277
278      ! -------------------------------
279      !- check conservation (C Rousset)
280      IF( ln_limdiahsb ) THEN
281         zchk_fs  = glob_sum( ( sfx_bri(:,:) + sfx_bog(:,:) + sfx_bom(:,:) + sfx_sum(:,:) + sfx_sni(:,:) + sfx_opw(:,:) + sfx_res(:,:) + sfx_dyn(:,:) ) * area(:,:) * tms(:,:) ) - zchk_fs_b
282         zchk_fw  = glob_sum( ( wfx_bog(:,:) + wfx_bom(:,:) + wfx_sum(:,:) + wfx_sni(:,:) + wfx_opw(:,:) + wfx_res(:,:) + wfx_dyn(:,:) + wfx_snw(:,:) ) * area(:,:) * tms(:,:) ) - zchk_fw_b
283         zchk_ft  = glob_sum( ( hfx_tot(:,:) - hfx_thd(:,:) - hfx_dyn(:,:) - hfx_res(:,:) ) * area(:,:) / unit_fac * tms(:,:) ) - zchk_ft_b
284 
285         zchk_v_i = ( glob_sum( SUM(   v_i(:,:,:)*rhoic + v_s(:,:,:)*rhosn, dim=3 ) * area(:,:) * tms(:,:) ) - zchk_v_i_b ) * r1_rdtice - zchk_fw 
286         zchk_smv = ( glob_sum( SUM( smv_i(:,:,:), dim=3 ) * area(:,:) * tms(:,:) ) - zchk_smv_b ) * r1_rdtice + ( zchk_fs / rhoic )
287         zchk_e_i =   glob_sum( SUM( e_i(:,:,1:nlay_i,:), dim=3 ) + SUM( e_s(:,:,1:nlay_s,:), dim=3 ) ) * r1_rdtice - zchk_e_i_b * r1_rdtice + zchk_ft
288
289         zchk_vmin = glob_min(v_i)
290         zchk_amax = glob_max(SUM(a_i,dim=3))
291         zchk_amin = glob_min(a_i)
292
293         IF(lwp) THEN
294            IF ( ABS( zchk_v_i   ) >  1.e-4 ) WRITE(numout,*) 'violation volume [kg/day]     (limupdate2) = ',(zchk_v_i * rday)
295            IF ( ABS( zchk_smv   ) >  1.e-4 ) WRITE(numout,*) 'violation saline [psu*m3/day] (limupdate2) = ',(zchk_smv * rday)
296            IF ( ABS( zchk_e_i   ) >  1.e-2 ) WRITE(numout,*) 'violation enthalpy [1e9 J]    (limupdate2) = ',(zchk_e_i)
297            IF ( zchk_vmin <  0.            ) WRITE(numout,*) 'violation v_i<0  [mm]         (limupdate2) = ',(zchk_vmin * 1.e-3)
298            IF ( zchk_amax >  amax+epsi10   ) WRITE(numout,*) 'violation a_i>amax            (limupdate2) = ',zchk_amax
299            IF ( zchk_amin <  0.            ) WRITE(numout,*) 'violation a_i<0               (limupdate2) = ',zchk_amin
300         ENDIF
301       ENDIF
302      !- check conservation (C Rousset)
303      ! -------------------------------
304
305      IF(ln_ctl) THEN   ! Control print
306         CALL prt_ctl_info(' ')
307         CALL prt_ctl_info(' - Cell values : ')
308         CALL prt_ctl_info('   ~~~~~~~~~~~~~ ')
309         CALL prt_ctl(tab2d_1=area       , clinfo1=' lim_update2  : cell area   :')
310         CALL prt_ctl(tab2d_1=at_i       , clinfo1=' lim_update2  : at_i        :')
311         CALL prt_ctl(tab2d_1=vt_i       , clinfo1=' lim_update2  : vt_i        :')
312         CALL prt_ctl(tab2d_1=vt_s       , clinfo1=' lim_update2  : vt_s        :')
313         CALL prt_ctl(tab2d_1=strength   , clinfo1=' lim_update2  : strength    :')
314         CALL prt_ctl(tab2d_1=u_ice      , clinfo1=' lim_update2  : u_ice       :', tab2d_2=v_ice      , clinfo2=' v_ice       :')
315         CALL prt_ctl(tab2d_1=old_u_ice  , clinfo1=' lim_update2  : old_u_ice   :', tab2d_2=old_v_ice  , clinfo2=' old_v_ice   :')
316
317         DO jl = 1, jpl
318            CALL prt_ctl_info(' ')
319            CALL prt_ctl_info(' - Category : ', ivar1=jl)
320            CALL prt_ctl_info('   ~~~~~~~~~~')
321            CALL prt_ctl(tab2d_1=ht_i       (:,:,jl)        , clinfo1= ' lim_update2  : ht_i        : ')
322            CALL prt_ctl(tab2d_1=ht_s       (:,:,jl)        , clinfo1= ' lim_update2  : ht_s        : ')
323            CALL prt_ctl(tab2d_1=t_su       (:,:,jl)        , clinfo1= ' lim_update2  : t_su        : ')
324            CALL prt_ctl(tab2d_1=t_s        (:,:,1,jl)      , clinfo1= ' lim_update2  : t_snow      : ')
325            CALL prt_ctl(tab2d_1=sm_i       (:,:,jl)        , clinfo1= ' lim_update2  : sm_i        : ')
326            CALL prt_ctl(tab2d_1=o_i        (:,:,jl)        , clinfo1= ' lim_update2  : o_i         : ')
327            CALL prt_ctl(tab2d_1=a_i        (:,:,jl)        , clinfo1= ' lim_update2  : a_i         : ')
328            CALL prt_ctl(tab2d_1=old_a_i    (:,:,jl)        , clinfo1= ' lim_update2  : old_a_i     : ')
329            CALL prt_ctl(tab2d_1=d_a_i_thd  (:,:,jl)        , clinfo1= ' lim_update2  : d_a_i_thd   : ')
330            CALL prt_ctl(tab2d_1=v_i        (:,:,jl)        , clinfo1= ' lim_update2  : v_i         : ')
331            CALL prt_ctl(tab2d_1=old_v_i    (:,:,jl)        , clinfo1= ' lim_update2  : old_v_i     : ')
332            CALL prt_ctl(tab2d_1=d_v_i_thd  (:,:,jl)        , clinfo1= ' lim_update2  : d_v_i_thd   : ')
333            CALL prt_ctl(tab2d_1=v_s        (:,:,jl)        , clinfo1= ' lim_update2  : v_s         : ')
334            CALL prt_ctl(tab2d_1=old_v_s    (:,:,jl)        , clinfo1= ' lim_update2  : old_v_s     : ')
335            CALL prt_ctl(tab2d_1=d_v_s_thd  (:,:,jl)        , clinfo1= ' lim_update2  : d_v_s_thd   : ')
336            CALL prt_ctl(tab2d_1=e_i        (:,:,1,jl)/1.0e9, clinfo1= ' lim_update2  : e_i1        : ')
337            CALL prt_ctl(tab2d_1=old_e_i    (:,:,1,jl)/1.0e9, clinfo1= ' lim_update2  : old_e_i1    : ')
338            CALL prt_ctl(tab2d_1=d_e_i_thd  (:,:,1,jl)/1.0e9, clinfo1= ' lim_update2  : de_i1_thd   : ')
339            CALL prt_ctl(tab2d_1=e_i        (:,:,2,jl)/1.0e9, clinfo1= ' lim_update2  : e_i2        : ')
340            CALL prt_ctl(tab2d_1=old_e_i    (:,:,2,jl)/1.0e9, clinfo1= ' lim_update2  : old_e_i2    : ')
341            CALL prt_ctl(tab2d_1=d_e_i_thd  (:,:,2,jl)/1.0e9, clinfo1= ' lim_update2  : de_i2_thd   : ')
342            CALL prt_ctl(tab2d_1=e_s        (:,:,1,jl)      , clinfo1= ' lim_update2  : e_snow      : ')
343            CALL prt_ctl(tab2d_1=old_e_s    (:,:,1,jl)      , clinfo1= ' lim_update2  : old_e_snow  : ')
344            CALL prt_ctl(tab2d_1=d_e_s_thd  (:,:,1,jl)/1.0e9, clinfo1= ' lim_update2  : d_e_s_thd   : ')
345            CALL prt_ctl(tab2d_1=smv_i      (:,:,jl)        , clinfo1= ' lim_update2  : smv_i       : ')
346            CALL prt_ctl(tab2d_1=old_smv_i  (:,:,jl)        , clinfo1= ' lim_update2  : old_smv_i   : ')
347            CALL prt_ctl(tab2d_1=d_smv_i_thd(:,:,jl)        , clinfo1= ' lim_update2  : d_smv_i_thd : ')
348            CALL prt_ctl(tab2d_1=oa_i       (:,:,jl)        , clinfo1= ' lim_update2  : oa_i        : ')
349            CALL prt_ctl(tab2d_1=old_oa_i   (:,:,jl)        , clinfo1= ' lim_update2  : old_oa_i    : ')
350            CALL prt_ctl(tab2d_1=d_oa_i_thd (:,:,jl)        , clinfo1= ' lim_update2  : d_oa_i_thd  : ')
351
352            DO jk = 1, nlay_i
353               CALL prt_ctl_info(' - Layer : ', ivar1=jk)
354               CALL prt_ctl(tab2d_1=t_i(:,:,jk,jl) , clinfo1= ' lim_update2  : t_i       : ')
355            END DO
356         END DO
357
358         CALL prt_ctl_info(' ')
359         CALL prt_ctl_info(' - Heat / FW fluxes : ')
360         CALL prt_ctl_info('   ~~~~~~~~~~~~~~~~~~ ')
361         CALL prt_ctl(tab2d_1=sst_m  , clinfo1= ' lim_update2 : sst   : ', tab2d_2=sss_m     , clinfo2= ' sss       : ')
362
363         CALL prt_ctl_info(' ')
364         CALL prt_ctl_info(' - Stresses : ')
365         CALL prt_ctl_info('   ~~~~~~~~~~ ')
366         CALL prt_ctl(tab2d_1=utau       , clinfo1= ' lim_update2 : utau      : ', tab2d_2=vtau       , clinfo2= ' vtau      : ')
367         CALL prt_ctl(tab2d_1=utau_ice   , clinfo1= ' lim_update2 : utau_ice  : ', tab2d_2=vtau_ice   , clinfo2= ' vtau_ice  : ')
368         CALL prt_ctl(tab2d_1=u_oce      , clinfo1= ' lim_update2 : u_oce     : ', tab2d_2=v_oce      , clinfo2= ' v_oce     : ')
369      ENDIF
370   
371      IF( nn_timing == 1 )  CALL timing_stop('limupdate2')
372   END SUBROUTINE lim_update2
373#else
374   !!----------------------------------------------------------------------
375   !!   Default option         Empty Module               No sea-ice model
376   !!----------------------------------------------------------------------
377CONTAINS
378   SUBROUTINE lim_update2     ! Empty routine
379   END SUBROUTINE lim_update2
380
381#endif
382
383END MODULE limupdate2
Note: See TracBrowser for help on using the repository browser.