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.
limctl.F90 in branches/2015/dev_r5803_NOC_WAD/NEMOGCM/NEMO/LIM_SRC_3 – NEMO

source: branches/2015/dev_r5803_NOC_WAD/NEMOGCM/NEMO/LIM_SRC_3/limctl.F90 @ 5870

Last change on this file since 5870 was 5870, checked in by acc, 8 years ago

Branch 2015/dev_r5803_NOC_WAD. Merge in trunk changes from 5803 to 5869 in preparation for merge. Also tidied and reorganised some wetting and drying code. Renamed wadlmt.F90 to wetdry.F90. Wetting drying code changes restricted to domzgr.F90, domvvl.F90 nemogcm.F90 sshwzv.F90, dynspg_ts.F90, wetdry.F90 and dynhpg.F90. Code passes full SETTE tests with ln_wd=.false.. Still awaiting test case for checking with ln_wd=.false.

File size: 21.8 KB
Line 
1MODULE limctl
2   !!======================================================================
3   !!                     ***  MODULE  limctl  ***
4   !!   LIM-3 : control and printing
5   !!======================================================================
6   !! History :  3.5  !  2015-01  (M. Vancoppenolle) Original code
7   !!----------------------------------------------------------------------
8#if defined key_lim3
9   !!----------------------------------------------------------------------
10   !!   'key_lim3'                                      LIM3 sea-ice model
11   !!----------------------------------------------------------------------
12   !!    lim_ctl   : control prints in case of crash
13   !!    lim_prt   : ice control print at a given grid point
14   !!----------------------------------------------------------------------
15   USE oce             ! ocean dynamics and tracers
16   USE dom_oce         ! ocean space and time domain
17   USE ice             ! LIM-3: ice variables
18   USE thd_ice         ! LIM-3: thermodynamical variables
19   USE dom_ice         ! LIM-3: ice domain
20   USE sbc_oce         ! Surface boundary condition: ocean fields
21   USE sbc_ice         ! Surface boundary condition: ice   fields
22
23   USE phycst          ! Define parameters for the routines
24
25   USE lib_mpp         ! MPP library
26   USE wrk_nemo        ! work arrays
27   USE timing          ! Timing
28   USE in_out_manager  ! I/O manager
29   USE prtctl          ! Print control
30   USE lib_fortran     !
31
32   IMPLICIT NONE
33   PRIVATE
34
35   PUBLIC   lim_ctl
36   PUBLIC   lim_prt
37
38   !! * Substitutions
39#  include "vectopt_loop_substitute.h90"
40   !!----------------------------------------------------------------------
41   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
42   !! $Id: limctl.F90 5043 2015-01-28 16:44:18Z clem $
43   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
44   !!----------------------------------------------------------------------
45
46CONTAINS
47
48   SUBROUTINE lim_ctl( kt )
49      !!-----------------------------------------------------------------------
50      !!                   ***  ROUTINE lim_ctl ***
51      !!                 
52      !! ** Purpose :   Alerts in case of model crash
53      !!-------------------------------------------------------------------
54      INTEGER, INTENT(in) ::   kt      ! ocean time step
55      INTEGER  ::   ji, jj, jk,  jl   ! dummy loop indices
56      INTEGER  ::   inb_altests       ! number of alert tests (max 20)
57      INTEGER  ::   ialert_id         ! number of the current alert
58      REAL(wp) ::   ztmelts           ! ice layer melting point
59      CHARACTER (len=30), DIMENSION(20)      ::   cl_alname   ! name of alert
60      INTEGER           , DIMENSION(20)      ::   inb_alp     ! number of alerts positive
61      !!-------------------------------------------------------------------
62
63      inb_altests = 10
64      inb_alp(:)  =  0
65
66      ! Alert if incompatible volume and concentration
67      ialert_id = 2 ! reference number of this alert
68      cl_alname(ialert_id) = ' Incompat vol and con         '    ! name of the alert
69
70      DO jl = 1, jpl
71         DO jj = 1, jpj
72            DO ji = 1, jpi
73               IF(  v_i(ji,jj,jl) /= 0._wp   .AND.   a_i(ji,jj,jl) == 0._wp   ) THEN
74                  !WRITE(numout,*) ' ALERTE 2 :   Incompatible volume and concentration '
75                  !WRITE(numout,*) ' at_i     ', at_i(ji,jj)
76                  !WRITE(numout,*) ' Point - category', ji, jj, jl
77                  !WRITE(numout,*) ' a_i *** a_i_b   ', a_i      (ji,jj,jl), a_i_b  (ji,jj,jl)
78                  !WRITE(numout,*) ' v_i *** v_i_b   ', v_i      (ji,jj,jl), v_i_b  (ji,jj,jl)
79                  inb_alp(ialert_id) = inb_alp(ialert_id) + 1
80               ENDIF
81            END DO
82         END DO
83      END DO
84
85      ! Alerte if very thick ice
86      ialert_id = 3 ! reference number of this alert
87      cl_alname(ialert_id) = ' Very thick ice               ' ! name of the alert
88      jl = jpl 
89      DO jj = 1, jpj
90         DO ji = 1, jpi
91            IF(   ht_i(ji,jj,jl)  >  50._wp   ) THEN
92               !CALL lim_prt( kt, ji, jj, 2, ' ALERTE 3 :   Very thick ice ' )
93               inb_alp(ialert_id) = inb_alp(ialert_id) + 1
94            ENDIF
95         END DO
96      END DO
97
98      ! Alert if very fast ice
99      ialert_id = 4 ! reference number of this alert
100      cl_alname(ialert_id) = ' Very fast ice               ' ! name of the alert
101      DO jj = 1, jpj
102         DO ji = 1, jpi
103            IF(   MAX( ABS( u_ice(ji,jj) ), ABS( v_ice(ji,jj) ) ) > 1.5  .AND.  &
104               &  at_i(ji,jj) > 0._wp   ) THEN
105               !CALL lim_prt( kt, ji, jj, 1, ' ALERTE 4 :   Very fast ice ' )
106               !WRITE(numout,*) ' ice strength             : ', strength(ji,jj)
107               !WRITE(numout,*) ' oceanic stress utau      : ', utau(ji,jj)
108               !WRITE(numout,*) ' oceanic stress vtau      : ', vtau(ji,jj)
109               !WRITE(numout,*) ' sea-ice stress utau_ice  : ', utau_ice(ji,jj)
110               !WRITE(numout,*) ' sea-ice stress vtau_ice  : ', vtau_ice(ji,jj)
111               !WRITE(numout,*) ' oceanic speed u          : ', u_oce(ji,jj)
112               !WRITE(numout,*) ' oceanic speed v          : ', v_oce(ji,jj)
113               !WRITE(numout,*) ' sst                      : ', sst_m(ji,jj)
114               !WRITE(numout,*) ' sss                      : ', sss_m(ji,jj)
115               !WRITE(numout,*)
116               inb_alp(ialert_id) = inb_alp(ialert_id) + 1
117            ENDIF
118         END DO
119      END DO
120
121      ! Alert if there is ice on continents
122      ialert_id = 6 ! reference number of this alert
123      cl_alname(ialert_id) = ' Ice on continents           ' ! name of the alert
124      DO jj = 1, jpj
125         DO ji = 1, jpi
126            IF(   tmask(ji,jj,1) <= 0._wp   .AND.   at_i(ji,jj) > 0._wp   ) THEN 
127               !CALL lim_prt( kt, ji, jj, 1, ' ALERTE 6 :   Ice on continents ' )
128               !WRITE(numout,*) ' masks s, u, v        : ', tmask(ji,jj,1), umask(ji,jj,1), vmask(ji,jj,1)
129               !WRITE(numout,*) ' sst                  : ', sst_m(ji,jj)
130               !WRITE(numout,*) ' sss                  : ', sss_m(ji,jj)
131               !WRITE(numout,*) ' at_i(ji,jj)          : ', at_i(ji,jj)
132               !WRITE(numout,*) ' v_ice(ji,jj)         : ', v_ice(ji,jj)
133               !WRITE(numout,*) ' v_ice(ji,jj-1)       : ', v_ice(ji,jj-1)
134               !WRITE(numout,*) ' u_ice(ji-1,jj)       : ', u_ice(ji-1,jj)
135               !WRITE(numout,*) ' u_ice(ji,jj)         : ', v_ice(ji,jj)
136               !
137               inb_alp(ialert_id) = inb_alp(ialert_id) + 1
138            ENDIF
139         END DO
140      END DO
141
142!
143!     ! Alert if very fresh ice
144      ialert_id = 7 ! reference number of this alert
145      cl_alname(ialert_id) = ' Very fresh ice               ' ! name of the alert
146      DO jl = 1, jpl
147         DO jj = 1, jpj
148            DO ji = 1, jpi
149               IF( sm_i(ji,jj,jl) < 0.1 .AND. a_i(ji,jj,jl) > 0._wp ) THEN
150!                 CALL lim_prt(kt,ji,jj,1, ' ALERTE 7 :   Very fresh ice ' )
151!                 WRITE(numout,*) ' sst                  : ', sst_m(ji,jj)
152!                 WRITE(numout,*) ' sss                  : ', sss_m(ji,jj)
153!                 WRITE(numout,*)
154                  inb_alp(ialert_id) = inb_alp(ialert_id) + 1
155               ENDIF
156            END DO
157         END DO
158      END DO
159!
160
161!     ! Alert if too old ice
162      ialert_id = 9 ! reference number of this alert
163      cl_alname(ialert_id) = ' Very old   ice               ' ! name of the alert
164      DO jl = 1, jpl
165         DO jj = 1, jpj
166            DO ji = 1, jpi
167               IF ( ( ( ABS( o_i(ji,jj,jl) ) > rdt_ice ) .OR. &
168                      ( ABS( o_i(ji,jj,jl) ) < 0._wp) ) .AND. &
169                             ( a_i(ji,jj,jl) > 0._wp ) ) THEN
170                  !CALL lim_prt( kt, ji, jj, 1, ' ALERTE 9 :   Wrong ice age ')
171                  inb_alp(ialert_id) = inb_alp(ialert_id) + 1
172               ENDIF
173            END DO
174         END DO
175      END DO
176 
177      ! Alert on salt flux
178      ialert_id = 5 ! reference number of this alert
179      cl_alname(ialert_id) = ' High salt flux               ' ! name of the alert
180      DO jj = 1, jpj
181         DO ji = 1, jpi
182            IF( ABS( sfx (ji,jj) ) > 1.0e-2 ) THEN  ! = 1 psu/day for 1m ocean depth
183               !CALL lim_prt( kt, ji, jj, 3, ' ALERTE 5 :   High salt flux ' )
184               !DO jl = 1, jpl
185                  !WRITE(numout,*) ' Category no: ', jl
186                  !WRITE(numout,*) ' a_i        : ', a_i      (ji,jj,jl) , ' a_i_b      : ', a_i_b  (ji,jj,jl)   
187                  !WRITE(numout,*) ' v_i        : ', v_i      (ji,jj,jl) , ' v_i_b      : ', v_i_b  (ji,jj,jl)   
188                  !WRITE(numout,*) ' '
189               !END DO
190               inb_alp(ialert_id) = inb_alp(ialert_id) + 1
191            ENDIF
192         END DO
193      END DO
194
195      ! Alert if qns very big
196      ialert_id = 8 ! reference number of this alert
197      cl_alname(ialert_id) = ' fnsolar very big             ' ! name of the alert
198      DO jj = 1, jpj
199         DO ji = 1, jpi
200            IF( ABS( qns(ji,jj) ) > 1500._wp .AND. at_i(ji,jj) > 0._wp ) THEN
201               !
202               !WRITE(numout,*) ' ALERTE 8 :   Very high non-solar heat flux'
203               !WRITE(numout,*) ' ji, jj    : ', ji, jj
204               !WRITE(numout,*) ' qns       : ', qns(ji,jj)
205               !WRITE(numout,*) ' sst       : ', sst_m(ji,jj)
206               !WRITE(numout,*) ' sss       : ', sss_m(ji,jj)
207               !
208               !CALL lim_prt( kt, ji, jj, 2, '   ')
209               inb_alp(ialert_id) = inb_alp(ialert_id) + 1
210               !
211            ENDIF
212         END DO
213      END DO
214      !+++++
215 
216      ! Alert if very warm ice
217      ialert_id = 10 ! reference number of this alert
218      cl_alname(ialert_id) = ' Very warm ice                ' ! name of the alert
219      inb_alp(ialert_id) = 0
220      DO jl = 1, jpl
221         DO jk = 1, nlay_i
222            DO jj = 1, jpj
223               DO ji = 1, jpi
224                  ztmelts    =  -tmut * s_i(ji,jj,jk,jl) + rt0
225                  IF( t_i(ji,jj,jk,jl) >= ztmelts  .AND.  v_i(ji,jj,jl) > 1.e-10   &
226                     &                             .AND.  a_i(ji,jj,jl) > 0._wp   ) THEN
227                     !WRITE(numout,*) ' ALERTE 10 :   Very warm ice'
228                     !WRITE(numout,*) ' ji, jj, jk, jl : ', ji, jj, jk, jl
229                     !WRITE(numout,*) ' t_i : ', t_i(ji,jj,jk,jl)
230                     !WRITE(numout,*) ' e_i : ', e_i(ji,jj,jk,jl)
231                     !WRITE(numout,*) ' s_i : ', s_i(ji,jj,jk,jl)
232                     !WRITE(numout,*) ' ztmelts : ', ztmelts
233                     inb_alp(ialert_id) = inb_alp(ialert_id) + 1
234                  ENDIF
235               END DO
236            END DO
237         END DO
238      END DO
239
240      ! sum of the alerts on all processors
241      IF( lk_mpp ) THEN
242         DO ialert_id = 1, inb_altests
243            CALL mpp_sum(inb_alp(ialert_id))
244         END DO
245      ENDIF
246
247      ! print alerts
248      IF( lwp ) THEN
249         ialert_id = 1                                 ! reference number of this alert
250         cl_alname(ialert_id) = ' NO alerte 1      '   ! name of the alert
251         WRITE(numout,*) ' time step ',kt
252         WRITE(numout,*) ' All alerts at the end of ice model '
253         DO ialert_id = 1, inb_altests
254            WRITE(numout,*) ialert_id, cl_alname(ialert_id)//' : ', inb_alp(ialert_id), ' times ! '
255         END DO
256      ENDIF
257     !
258   END SUBROUTINE lim_ctl
259 
260   
261   SUBROUTINE lim_prt( kt, ki, kj, kn, cd1 )
262      !!-----------------------------------------------------------------------
263      !!                   ***  ROUTINE lim_prt ***
264      !!                 
265      !! ** Purpose :   Writes global ice state on the (i,j) point
266      !!                in ocean.ouput
267      !!                3 possibilities exist
268      !!                n = 1/-1 -> simple ice state (plus Mechanical Check if -1)
269      !!                n = 2    -> exhaustive state
270      !!                n = 3    -> ice/ocean salt fluxes
271      !!
272      !! ** input   :   point coordinates (i,j)
273      !!                n : number of the option
274      !!-------------------------------------------------------------------
275      INTEGER         , INTENT(in) ::   kt            ! ocean time step
276      INTEGER         , INTENT(in) ::   ki, kj, kn    ! ocean gridpoint indices
277      CHARACTER(len=*), INTENT(in) ::   cd1           !
278      !!
279      INTEGER :: jl, ji, jj
280      !!-------------------------------------------------------------------
281
282      DO ji = mi0(ki), mi1(ki)
283         DO jj = mj0(kj), mj1(kj)
284
285            WRITE(numout,*) ' time step ',kt,' ',cd1             ! print title
286
287            !----------------
288            !  Simple state
289            !----------------
290           
291            IF ( kn == 1 .OR. kn == -1 ) THEN
292               WRITE(numout,*) ' lim_prt - Point : ',ji,jj
293               WRITE(numout,*) ' ~~~~~~~~~~~~~~ '
294               WRITE(numout,*) ' Simple state '
295               WRITE(numout,*) ' masks s,u,v   : ', tmask(ji,jj,1), umask(ji,jj,1), vmask(ji,jj,1)
296               WRITE(numout,*) ' lat - long    : ', gphit(ji,jj), glamt(ji,jj)
297               WRITE(numout,*) ' Time step     : ', numit
298               WRITE(numout,*) ' - Ice drift   '
299               WRITE(numout,*) '   ~~~~~~~~~~~ '
300               WRITE(numout,*) ' u_ice(i-1,j)  : ', u_ice(ji-1,jj)
301               WRITE(numout,*) ' u_ice(i  ,j)  : ', u_ice(ji,jj)
302               WRITE(numout,*) ' v_ice(i  ,j-1): ', v_ice(ji,jj-1)
303               WRITE(numout,*) ' v_ice(i  ,j)  : ', v_ice(ji,jj)
304               WRITE(numout,*) ' strength      : ', strength(ji,jj)
305               WRITE(numout,*)
306               WRITE(numout,*) ' - Cell values '
307               WRITE(numout,*) '   ~~~~~~~~~~~ '
308               WRITE(numout,*) ' cell area     : ', e1e2t(ji,jj)
309               WRITE(numout,*) ' at_i          : ', at_i(ji,jj)       
310               WRITE(numout,*) ' vt_i          : ', vt_i(ji,jj)       
311               WRITE(numout,*) ' vt_s          : ', vt_s(ji,jj)       
312               DO jl = 1, jpl
313                  WRITE(numout,*) ' - Category (', jl,')'
314                  WRITE(numout,*) ' a_i           : ', a_i(ji,jj,jl)
315                  WRITE(numout,*) ' ht_i          : ', ht_i(ji,jj,jl)
316                  WRITE(numout,*) ' ht_s          : ', ht_s(ji,jj,jl)
317                  WRITE(numout,*) ' v_i           : ', v_i(ji,jj,jl)
318                  WRITE(numout,*) ' v_s           : ', v_s(ji,jj,jl)
319                  WRITE(numout,*) ' e_s           : ', e_s(ji,jj,1,jl)
320                  WRITE(numout,*) ' e_i           : ', e_i(ji,jj,1:nlay_i,jl)
321                  WRITE(numout,*) ' t_su          : ', t_su(ji,jj,jl)
322                  WRITE(numout,*) ' t_snow        : ', t_s(ji,jj,1,jl)
323                  WRITE(numout,*) ' t_i           : ', t_i(ji,jj,1:nlay_i,jl)
324                  WRITE(numout,*) ' sm_i          : ', sm_i(ji,jj,jl)
325                  WRITE(numout,*) ' smv_i         : ', smv_i(ji,jj,jl)
326                  WRITE(numout,*)
327               END DO
328            ENDIF
329            IF( kn == -1 ) THEN
330               WRITE(numout,*) ' Mechanical Check ************** '
331               WRITE(numout,*) ' Check what means ice divergence '
332               WRITE(numout,*) ' Total ice concentration ', at_i (ji,jj)
333               WRITE(numout,*) ' Total lead fraction     ', ato_i(ji,jj)
334               WRITE(numout,*) ' Sum of both             ', ato_i(ji,jj) + at_i(ji,jj)
335               WRITE(numout,*) ' Sum of both minus 1     ', ato_i(ji,jj) + at_i(ji,jj) - 1.00
336            ENDIF
337           
338
339            !--------------------
340            !  Exhaustive state
341            !--------------------
342           
343            IF ( kn .EQ. 2 ) THEN
344               WRITE(numout,*) ' lim_prt - Point : ',ji,jj
345               WRITE(numout,*) ' ~~~~~~~~~~~~~~ '
346               WRITE(numout,*) ' Exhaustive state '
347               WRITE(numout,*) ' lat - long ', gphit(ji,jj), glamt(ji,jj)
348               WRITE(numout,*) ' Time step ', numit
349               WRITE(numout,*) 
350               WRITE(numout,*) ' - Cell values '
351               WRITE(numout,*) '   ~~~~~~~~~~~ '
352               WRITE(numout,*) ' cell area     : ', e1e2t(ji,jj)
353               WRITE(numout,*) ' at_i          : ', at_i(ji,jj)       
354               WRITE(numout,*) ' vt_i          : ', vt_i(ji,jj)       
355               WRITE(numout,*) ' vt_s          : ', vt_s(ji,jj)       
356               WRITE(numout,*) ' u_ice(i-1,j)  : ', u_ice(ji-1,jj)
357               WRITE(numout,*) ' u_ice(i  ,j)  : ', u_ice(ji,jj)
358               WRITE(numout,*) ' v_ice(i  ,j-1): ', v_ice(ji,jj-1)
359               WRITE(numout,*) ' v_ice(i  ,j)  : ', v_ice(ji,jj)
360               WRITE(numout,*) ' strength      : ', strength(ji,jj)
361               WRITE(numout,*) ' u_ice_b       : ', u_ice_b(ji,jj)    , ' v_ice_b       : ', v_ice_b(ji,jj) 
362               WRITE(numout,*)
363               
364               DO jl = 1, jpl
365                  WRITE(numout,*) ' - Category (',jl,')'
366                  WRITE(numout,*) '   ~~~~~~~~         ' 
367                  WRITE(numout,*) ' ht_i       : ', ht_i(ji,jj,jl)             , ' ht_s       : ', ht_s(ji,jj,jl)
368                  WRITE(numout,*) ' t_i        : ', t_i(ji,jj,1:nlay_i,jl)
369                  WRITE(numout,*) ' t_su       : ', t_su(ji,jj,jl)             , ' t_s        : ', t_s(ji,jj,1,jl)
370                  WRITE(numout,*) ' sm_i       : ', sm_i(ji,jj,jl)             , ' o_i        : ', o_i(ji,jj,jl)
371                  WRITE(numout,*) ' a_i        : ', a_i(ji,jj,jl)              , ' a_i_b      : ', a_i_b(ji,jj,jl)   
372                  WRITE(numout,*) ' v_i        : ', v_i(ji,jj,jl)              , ' v_i_b      : ', v_i_b(ji,jj,jl)   
373                  WRITE(numout,*) ' v_s        : ', v_s(ji,jj,jl)              , ' v_s_b      : ', v_s_b(ji,jj,jl) 
374                  WRITE(numout,*) ' e_i1       : ', e_i(ji,jj,1,jl)            , ' ei1        : ', e_i_b(ji,jj,1,jl) 
375                  WRITE(numout,*) ' e_i2       : ', e_i(ji,jj,2,jl)            , ' ei2_b      : ', e_i_b(ji,jj,2,jl) 
376                  WRITE(numout,*) ' e_snow     : ', e_s(ji,jj,1,jl)            , ' e_snow_b   : ', e_s_b(ji,jj,1,jl) 
377                  WRITE(numout,*) ' smv_i      : ', smv_i(ji,jj,jl)            , ' smv_i_b    : ', smv_i_b(ji,jj,jl)   
378                  WRITE(numout,*) ' oa_i       : ', oa_i(ji,jj,jl)             , ' oa_i_b     : ', oa_i_b(ji,jj,jl)
379               END DO !jl
380               
381               WRITE(numout,*)
382               WRITE(numout,*) ' - Heat / FW fluxes '
383               WRITE(numout,*) '   ~~~~~~~~~~~~~~~~ '
384               WRITE(numout,*) ' - Heat fluxes in and out the ice ***'
385               WRITE(numout,*) ' qsr_ini       : ', pfrld(ji,jj) * qsr(ji,jj) + SUM( a_i_b(ji,jj,:) * qsr_ice(ji,jj,:) )
386               WRITE(numout,*) ' qns_ini       : ', pfrld(ji,jj) * qns(ji,jj) + SUM( a_i_b(ji,jj,:) * qns_ice(ji,jj,:) )
387               WRITE(numout,*)
388               WRITE(numout,*) 
389               WRITE(numout,*) ' sst        : ', sst_m(ji,jj) 
390               WRITE(numout,*) ' sss        : ', sss_m(ji,jj) 
391               WRITE(numout,*) 
392               WRITE(numout,*) ' - Stresses '
393               WRITE(numout,*) '   ~~~~~~~~ '
394               WRITE(numout,*) ' utau_ice   : ', utau_ice(ji,jj) 
395               WRITE(numout,*) ' vtau_ice   : ', vtau_ice(ji,jj)
396               WRITE(numout,*) ' utau       : ', utau    (ji,jj) 
397               WRITE(numout,*) ' vtau       : ', vtau    (ji,jj)
398               WRITE(numout,*) ' oc. vel. u : ', u_oce   (ji,jj)
399               WRITE(numout,*) ' oc. vel. v : ', v_oce   (ji,jj)
400            ENDIF
401           
402            !---------------------
403            ! Salt / heat fluxes
404            !---------------------
405           
406            IF ( kn .EQ. 3 ) THEN
407               WRITE(numout,*) ' lim_prt - Point : ',ji,jj
408               WRITE(numout,*) ' ~~~~~~~~~~~~~~ '
409               WRITE(numout,*) ' - Salt / Heat Fluxes '
410               WRITE(numout,*) '   ~~~~~~~~~~~~~~~~ '
411               WRITE(numout,*) ' lat - long ', gphit(ji,jj), glamt(ji,jj)
412               WRITE(numout,*) ' Time step ', numit
413               WRITE(numout,*)
414               WRITE(numout,*) ' - Heat fluxes at bottom interface ***'
415               WRITE(numout,*) ' qsr       : ', qsr(ji,jj)
416               WRITE(numout,*) ' qns       : ', qns(ji,jj)
417               WRITE(numout,*)
418               WRITE(numout,*) ' hfx_mass     : ', hfx_thd(ji,jj) + hfx_dyn(ji,jj) + hfx_snw(ji,jj) + hfx_res(ji,jj)
419               WRITE(numout,*) ' hfx_in       : ', hfx_in(ji,jj)
420               WRITE(numout,*) ' hfx_out      : ', hfx_out(ji,jj)
421               WRITE(numout,*) ' dhc          : ', diag_heat(ji,jj)             
422               WRITE(numout,*)
423               WRITE(numout,*) ' hfx_dyn      : ', hfx_dyn(ji,jj)
424               WRITE(numout,*) ' hfx_thd      : ', hfx_thd(ji,jj)
425               WRITE(numout,*) ' hfx_res      : ', hfx_res(ji,jj)
426               WRITE(numout,*) ' fhtur        : ', fhtur(ji,jj) 
427               WRITE(numout,*) ' qlead        : ', qlead(ji,jj) * r1_rdtice
428               WRITE(numout,*)
429               WRITE(numout,*) ' - Salt fluxes at bottom interface ***'
430               WRITE(numout,*) ' emp       : ', emp    (ji,jj)
431               WRITE(numout,*) ' sfx       : ', sfx    (ji,jj)
432               WRITE(numout,*) ' sfx_res   : ', sfx_res(ji,jj)
433               WRITE(numout,*) ' sfx_bri   : ', sfx_bri(ji,jj)
434               WRITE(numout,*) ' sfx_dyn   : ', sfx_dyn(ji,jj)
435               WRITE(numout,*)
436               WRITE(numout,*) ' - Momentum fluxes '
437               WRITE(numout,*) ' utau      : ', utau(ji,jj) 
438               WRITE(numout,*) ' vtau      : ', vtau(ji,jj)
439            ENDIF
440            WRITE(numout,*) ' '
441            !
442         END DO
443      END DO
444      !
445   END SUBROUTINE lim_prt
446
447#else
448   !!--------------------------------------------------------------------------
449   !!   Default option         Empty Module               No LIM3 sea-ice model
450   !!--------------------------------------------------------------------------
451CONTAINS
452   SUBROUTINE lim_ctl     ! Empty routine
453   END SUBROUTINE lim_ctl
454   SUBROUTINE lim_prt     ! Empty routine
455   END SUBROUTINE lim_prt
456#endif
457   !!======================================================================
458END MODULE limctl
Note: See TracBrowser for help on using the repository browser.