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

source: trunk/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90 @ 2715

Last change on this file since 2715 was 2715, checked in by rblod, 13 years ago

First attempt to put dynamic allocation on the trunk

  • Property svn:keywords set to Id
File size: 19.8 KB
Line 
1MODULE limwri
2   !!======================================================================
3   !!                     ***  MODULE  limwri  ***
4   !!         Ice diagnostics :  write ice output files
5   !!======================================================================
6#if defined key_lim3
7   !!----------------------------------------------------------------------
8   !!   'key_lim3'                                      LIM3 sea-ice model
9   !!----------------------------------------------------------------------
10   !!   lim_wri      : write of the diagnostics variables in ouput file
11   !!   lim_wri_init : initialization and namelist read
12   !!----------------------------------------------------------------------
13   USE ioipsl
14   USE dianam          ! build name of file (routine)
15   USE phycst
16   USE dom_oce
17   USE sbc_oce         ! Surface boundary condition: ocean fields
18   USE sbc_ice         ! Surface boundary condition: ice fields
19   USE dom_ice
20   USE ice
21   USE limvar
22   USE in_out_manager
23   USE lbclnk
24   USE lib_mpp         ! MPP library
25   USE par_ice
26
27   IMPLICIT NONE
28   PRIVATE
29
30   PUBLIC lim_wri        ! routine called by lim_step.F90
31
32   INTEGER, PARAMETER ::   jpnoumax = 40   !: maximum number of variable for ice output
33   
34   INTEGER  ::   noumef             ! number of fields
35   INTEGER  ::   noumefa            ! number of additional fields
36   INTEGER  ::   add_diag_swi       ! additional diagnostics
37   INTEGER  ::   nz                                         ! dimension for the itd field
38
39   REAL(wp) , DIMENSION(jpnoumax) ::   cmulti         ! multiplicative constant
40   REAL(wp) , DIMENSION(jpnoumax) ::   cadd           ! additive constant
41   REAL(wp) , DIMENSION(jpnoumax) ::   cmultia        ! multiplicative constant
42   REAL(wp) , DIMENSION(jpnoumax) ::   cadda          ! additive constant
43   CHARACTER(len = 35), DIMENSION(jpnoumax) ::   titn, titna   ! title of the field
44   CHARACTER(len = 8 ), DIMENSION(jpnoumax) ::   nam , nama    ! name of the field
45   CHARACTER(len = 8 ), DIMENSION(jpnoumax) ::   uni , unia    ! unit of the field
46   INTEGER            , DIMENSION(jpnoumax) ::   nc  , nca     ! switch for saving field ( = 1 ) or not ( = 0 )
47
48   REAL(wp)  ::   epsi16 = 1e-16_wp
49   REAL(wp)  ::   zzero  = 0._wp
50   REAL(wp)  ::   zone   = 1._wp
51     
52   !!----------------------------------------------------------------------
53   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
54   !! $Id$
55   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
56   !!----------------------------------------------------------------------
57CONTAINS
58
59#if defined key_dimgout
60# include "limwri_dimg.h90"
61#else
62
63   SUBROUTINE lim_wri( kindic )
64      !!-------------------------------------------------------------------
65      !!  This routine computes the average of some variables and write it
66      !!  on the ouput files.
67      !!  ATTENTION cette routine n'est valable que si le pas de temps est
68      !!  egale a une fraction entiere de 1 jours.
69      !!  Diff 1-D 3-D : suppress common also included in etat
70      !!                 suppress cmoymo 11-18
71      !!  modif : 03/06/98
72      !!-------------------------------------------------------------------
73      USE wrk_nemo, ONLY:   wrk_not_released, wrk_in_use
74      USE wrk_nemo, ONLY:   zfield => wrk_2d_1             ! 2D workspace
75      USE wrk_nemo, ONLY:   wrk_3d_1, wrk_3D_2, wrk_3d_3   ! 3D workspace
76      !
77      INTEGER, INTENT(in) ::   kindic   ! if kindic < 0 there has been an error somewhere
78      !
79      INTEGER ::  ji, jj, jk, jl, jf, ipl ! dummy loop indices
80      INTEGER ::  ierr
81      REAL(wp),DIMENSION(1) ::   zdept
82      REAL(wp) ::  zsto, zjulian, zout, zindh, zinda, zindb
83      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zcmo, zcmoa   ! additional fields
84      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zmaskitd, zoi, zei
85
86      CHARACTER(len = 40) ::   clhstnam, clop, clhstnama
87
88      INTEGER , SAVE ::   nice, nhorid, ndim, niter, ndepid
89      INTEGER , SAVE ::   nicea, nhorida, ndimitd
90      INTEGER , ALLOCATABLE, DIMENSION(:), SAVE ::   ndex51
91      INTEGER , ALLOCATABLE, DIMENSION(:), SAVE ::   ndexitd
92      !!-------------------------------------------------------------------
93
94      ipl = jpl
95
96      zcmo     => wrk_3d_1(:,:,1:jpnoumax)
97      zcmoa    => wrk_3d_2(:,:,1:jpnoumax)
98      zmaskitd => wrk_3d_2(:,:,1:jpl)
99      zoi      => wrk_3d_2(:,:,1:jpl)
100      zei      => wrk_3d_2(:,:,1:jpl)
101
102
103      IF( numit == nstart ) THEN
104
105         ALLOCATE( ndex51(jpij) , ndexitd(jpij*jpl) , STAT=ierr )
106         IF( ierr /= 0 ) THEN
107            CALL ctl_stop( 'lim_wri : unable to allocate standard arrays' )   ;   RETURN
108         ENDIF
109
110         CALL lim_wri_init 
111
112         IF(lwp) WRITE(numout,*) ' lim_wri, first time step '
113         IF(lwp) WRITE(numout,*) ' add_diag_swi ', add_diag_swi
114
115         !--------------------
116         !  1) Initialization
117         !--------------------
118
119         !-------------
120         ! Normal file
121         !-------------
122
123         zsto     = rdt_ice
124         IF( ln_mskland )   THEN   ;   clop = "ave(only(x))"   ! put 1.e+20 on land (very expensive!!)
125         ELSE                      ;   clop = "ave(x)"         ! no use of the mask value (require less cpu time)
126         ENDIF
127         zout     = nwrite * rdt_ice / nn_fsbc
128         niter    = ( nit000 - 1 ) / nn_fsbc
129         zdept(1) = 0.
130
131         CALL ymds2ju ( nyear, nmonth, nday, rdt, zjulian )
132         zjulian = zjulian - adatrj   !   set calendar origin to the beginning of the experiment
133         CALL dia_nam ( clhstnam, nwrite, 'icemod' )
134         CALL histbeg ( clhstnam, jpi, glamt, jpj, gphit, 1, jpi, 1, jpj, niter, zjulian, rdt_ice,   &
135            &           nhorid, nice, domain_id=nidom, snc4chunks=snc4set )
136         CALL histvert( nice, "deptht", "Vertical T levels", "m", 1, zdept, ndepid, "down")
137         CALL wheneq  ( jpij , tmask(:,:,1), 1, 1., ndex51, ndim)
138
139         DO jf = 1 , noumef
140            IF(lwp) WRITE(numout,*) 'jf', jf
141            IF ( nc(jf) == 1 ) THEN
142               CALL histdef( nice, nam(jf), titn(jf), uni(jf), jpi, jpj &
143                  , nhorid, 1, 1, 1, -99, 32, clop, zsto, zout )
144               IF(lwp) WRITE(numout,*) 'nice, nam(jf), titn(jf), uni(jf), nhorid, clop, zsto, zout'
145               IF(lwp) WRITE(numout,*)  nice, nam(jf), titn(jf), uni(jf), nhorid, clop, zsto, zout 
146            ENDIF
147         END DO
148
149         CALL histend(nice, snc4set)
150
151         !-----------------
152         ! ITD file output
153         !-----------------
154         zsto     = rdt_ice
155         clop     = "ave(x)"
156         zout     = nwrite * rdt_ice / nn_fsbc
157         zdept(1) = 0.
158
159         CALL dia_nam ( clhstnama, nwrite, 'icemoa' )
160         CALL histbeg ( clhstnama, jpi, glamt, jpj, gphit,         &
161            1, jpi, 1, jpj,            & ! zoom
162            niter, zjulian, rdt_ice,   & ! time
163            nhorida,                   & ! ? linked with horizontal ...
164            nicea , domain_id=nidom, snc4chunks=snc4set)                  ! file
165         CALL histvert( nicea, "icethi", "L levels",               &
166            "m", ipl , hi_mean , nz )
167         DO jl = 1, jpl
168            zmaskitd(:,:,jl) = tmask(:,:,1)
169         END DO
170         CALL wheneq  ( jpij , tmask(:,:,1), 1, 1., ndex51, ndim)
171         CALL wheneq( jpi*jpj*jpl, zmaskitd, 1, 1., ndexitd, ndimitd  ) 
172         CALL histdef( nicea, "iice_itd", "Ice area in categories"         , "-"    ,   & 
173            jpi, jpj, nhorida, jpl, 1, jpl, nz, 15, clop, zsto, zout )
174         CALL histdef( nicea, "iice_hid", "Ice thickness in categories"    , "m"    ,   & 
175            jpi, jpj, nhorida, jpl, 1, jpl, nz, 15, clop, zsto, zout )
176         CALL histdef( nicea, "iice_hsd", "Snow depth in in categories"    , "m"    ,   & 
177            jpi, jpj, nhorida, jpl, 1, jpl, nz, 15, clop, zsto, zout )
178         CALL histdef( nicea, "iice_std", "Ice salinity distribution"      , "ppt"  ,   & 
179            jpi, jpj, nhorida, jpl, 1, jpl, nz, 15, clop, zsto, zout )
180         CALL histdef( nicea, "iice_otd", "Ice age distribution"               , "days",   & 
181            jpi, jpj, nhorida, jpl, 1, jpl, nz, 15, clop, zsto, zout )
182         CALL histdef( nicea, "iice_etd", "Brine volume distr. "               , "%"    ,   & 
183            jpi, jpj, nhorida, jpl, 1, jpl, nz, 15, clop, zsto, zout )
184         CALL histend(nicea, snc4set)
185      ENDIF
186
187      !     !-----------------------------------------------------------------------!
188      !     !--2. Computation of instantaneous values                               !
189      !     !-----------------------------------------------------------------------!
190
191      !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
192      IF( ln_nicep ) THEN
193         WRITE(numout,*)
194         WRITE(numout,*) 'lim_wri : write ice outputs in NetCDF files at time : ', nyear, nmonth, nday, numit
195         WRITE(numout,*) '~~~~~~~ '
196         WRITE(numout,*) ' kindic = ', kindic
197      ENDIF
198      !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
199
200      !-- calculs des valeurs instantanees
201      zcmo ( 1:jpi, 1:jpj, 1:jpnoumax ) = 0._wp
202      zcmoa( 1:jpi, 1:jpj, 1:jpnoumax ) = 0._wp
203
204      DO jl = 1, jpl
205         DO jj = 1, jpj
206            DO ji = 1, jpi
207               zindh  = MAX( zzero , SIGN( zone , vt_i(ji,jj) * at_i(ji,jj) - 0.10 ) )
208               zinda  = MAX( zzero , SIGN( zone , at_i(ji,jj) - 0.10 ) )
209               zcmo(ji,jj,17) = zcmo(ji,jj,17) + a_i(ji,jj,jl)*qsr_ice (ji,jj,jl) 
210               zcmo(ji,jj,18) = zcmo(ji,jj,18) + a_i(ji,jj,jl)*qns_ice(ji,jj,jl) 
211               zcmo(ji,jj,27) = zcmo(ji,jj,27) + t_su(ji,jj,jl)*a_i(ji,jj,jl)/MAX(at_i(ji,jj),epsi16)*zinda
212            END DO
213         END DO
214      END DO
215
216      CALL lim_var_bv
217
218      DO jj = 2 , jpjm1
219         DO ji = 2 , jpim1
220            zindh  = MAX( zzero , SIGN( zone , vt_i(ji,jj) * at_i(ji,jj) - 0.10 ) )
221            zinda  = MAX( zzero , SIGN( zone , at_i(ji,jj) - 0.10 ) )
222            zindb  = zindh * zinda
223
224            zcmo(ji,jj,1)  = at_i(ji,jj)
225            zcmo(ji,jj,2)  = vt_i(ji,jj) / MAX( at_i(ji,jj), epsi16 ) * zinda
226            zcmo(ji,jj,3)  = vt_s(ji,jj) / MAX( at_i(ji,jj), epsi16 ) * zinda
227            zcmo(ji,jj,4)  = diag_bot_gr(ji,jj) * 86400.0 * zinda    ! Bottom thermodynamic ice production
228            zcmo(ji,jj,5)  = diag_dyn_gr(ji,jj) * 86400.0 * zinda    ! Dynamic ice production (rid/raft)
229            zcmo(ji,jj,22) = diag_lat_gr(ji,jj) * 86400.0 * zinda    ! Lateral thermodynamic ice production
230            zcmo(ji,jj,23) = diag_sni_gr(ji,jj) * 86400.0 * zinda    ! Snow ice production ice production
231            zcmo(ji,jj,24) = tm_i(ji,jj) - rtt
232
233            zcmo(ji,jj,6)  = fbif  (ji,jj)
234            zcmo(ji,jj,7)  = zindb * (  u_ice(ji,jj) * tmu(ji,jj) + u_ice(ji-1,jj) * tmu(ji-1,jj) ) * 0.5_wp
235            zcmo(ji,jj,8)  = zindb * (  v_ice(ji,jj) * tmv(ji,jj) + v_ice(ji,jj-1) * tmv(ji,jj-1) ) * 0.5_wp
236            zcmo(ji,jj,9)  = sst_m(ji,jj)
237            zcmo(ji,jj,10) = sss_m(ji,jj)
238
239            zcmo(ji,jj,11) = qns(ji,jj) + qsr(ji,jj)
240            zcmo(ji,jj,12) = qsr(ji,jj)
241            zcmo(ji,jj,13) = qns(ji,jj)
242            zcmo(ji,jj,14) = fhbri(ji,jj)
243            zcmo(ji,jj,15) = utau_ice(ji,jj)
244            zcmo(ji,jj,16) = vtau_ice(ji,jj)
245            zcmo(ji,jj,17) = zcmo(ji,jj,17) + ( 1._wp - at_i(ji,jj) ) * qsr(ji,jj)
246            zcmo(ji,jj,18) = zcmo(ji,jj,18) + ( 1._wp - at_i(ji,jj) ) * qns(ji,jj)
247            zcmo(ji,jj,19) = sprecip(ji,jj)
248            zcmo(ji,jj,20) = smt_i(ji,jj)
249            zcmo(ji,jj,21) = ot_i(ji,jj)
250            zcmo(ji,jj,25) = et_i(ji,jj)
251            zcmo(ji,jj,26) = et_s(ji,jj)
252            zcmo(ji,jj,28) = fsbri(ji,jj)
253            zcmo(ji,jj,29) = fseqv(ji,jj)
254
255            zcmo(ji,jj,30) = bv_i(ji,jj)
256            zcmo(ji,jj,31) = hicol(ji,jj)
257            zcmo(ji,jj,32) = strength(ji,jj)
258            zcmo(ji,jj,33) = SQRT(  zcmo(ji,jj,7)*zcmo(ji,jj,7) + zcmo(ji,jj,8)*zcmo(ji,jj,8)  )
259            zcmo(ji,jj,34) = diag_sur_me(ji,jj) * 86400.0 * zinda    ! Surface melt
260            zcmo(ji,jj,35) = diag_bot_me(ji,jj) * 86400.0 * zinda    ! Bottom melt
261            zcmo(ji,jj,36) = divu_i(ji,jj)
262            zcmo(ji,jj,37) = shear_i(ji,jj)
263         END DO
264      END DO
265
266      !
267      ! ecriture d'un fichier netcdf
268      !
269      niter = niter + 1
270      DO jf = 1 , noumef
271         !
272         zfield(:,:) = zcmo(:,:,jf) * cmulti(jf) + cadd(jf)
273         !
274         IF( jf == 7  .OR. jf == 8  .OR. jf == 15 .OR. jf == 16 ) THEN   ;   CALL lbc_lnk( zfield, 'T', -1. )
275         ELSE                                                            ;   CALL lbc_lnk( zfield, 'T',  1. )
276         ENDIF
277         !
278         IF( ln_nicep ) THEN
279            WRITE(numout,*)
280            WRITE(numout,*) 'nc(jf), nice, nam(jf), niter, ndim'
281            WRITE(numout,*) nc(jf), nice, nam(jf), niter, ndim
282         ENDIF
283         IF( nc(jf) == 1 ) CALL histwrite( nice, nam(jf), niter, zfield, ndim, ndex51 )
284         !
285      END DO
286
287      IF( ( nn_fsbc * niter ) >= nitend .OR. kindic < 0 ) THEN
288         IF( lwp) WRITE(numout,*) ' Closing the icemod file '
289         CALL histclo( nice )
290      ENDIF
291
292      !-----------------------------
293      ! Thickness distribution file
294      !-----------------------------
295      IF( add_diag_swi == 1 ) THEN
296
297         DO jl = 1, jpl 
298            CALL lbc_lnk( a_i(:,:,jl)  , 'T' ,  1. )
299            CALL lbc_lnk( sm_i(:,:,jl) , 'T' ,  1. )
300            CALL lbc_lnk( oa_i(:,:,jl) , 'T' ,  1. )
301            CALL lbc_lnk( ht_i(:,:,jl) , 'T' ,  1. )
302            CALL lbc_lnk( ht_s(:,:,jl) , 'T' ,  1. )
303         END DO
304
305         ! Compute ice age
306         DO jl = 1, jpl 
307            DO jj = 1, jpj
308               DO ji = 1, jpi
309                  zinda = MAX( zzero , SIGN( zone , a_i(ji,jj,jl) - 1.0e-6 ) )
310                  zoi(ji,jj,jl) = oa_i(ji,jj,jl)  / MAX( a_i(ji,jj,jl) , 1.0e-6 ) * zinda
311               END DO
312            END DO
313         END DO
314
315         ! Compute brine volume
316         zei(:,:,:) = 0._wp
317         DO jl = 1, jpl 
318            DO jk = 1, nlay_i
319               DO jj = 1, jpj
320                  DO ji = 1, jpi
321                     zinda = MAX( zzero , SIGN( zone , a_i(ji,jj,jl) - 1.0e-6 ) )
322                     zei(ji,jj,jl) = zei(ji,jj,jl) + 100.0* &
323                        ( - tmut * s_i(ji,jj,jk,jl) / MIN( ( t_i(ji,jj,jk,jl) - rtt ), -1.0e-6 ) ) * &
324                        zinda / nlay_i
325                  END DO
326               END DO
327            END DO
328         END DO
329
330         DO jl = 1, jpl 
331            CALL lbc_lnk( zei(:,:,jl) , 'T' ,  1. )
332         END DO
333
334         CALL histwrite( nicea, "iice_itd", niter, a_i  , ndimitd , ndexitd  )   ! area
335         CALL histwrite( nicea, "iice_hid", niter, ht_i , ndimitd , ndexitd  )   ! thickness
336         CALL histwrite( nicea, "iice_hsd", niter, ht_s , ndimitd , ndexitd  )   ! snow depth
337         CALL histwrite( nicea, "iice_std", niter, sm_i , ndimitd , ndexitd  )   ! salinity
338         CALL histwrite( nicea, "iice_otd", niter, zoi  , ndimitd , ndexitd  )   ! age
339         CALL histwrite( nicea, "iice_etd", niter, zei  , ndimitd , ndexitd  )   ! brine volume
340
341         !     !  Create an output files (output.lim.abort.nc) if S < 0 or u > 20 m/s
342         !     IF( kindic < 0 )   CALL lim_wri_state( 'output.abort' )
343         !     not yet implemented
344
345         IF( ( nn_fsbc * niter ) >= nitend .OR. kindic < 0 ) THEN
346            IF(lwp) WRITE(numout,*) ' Closing the icemod file '
347            CALL histclo( nicea ) 
348         ENDIF
349         !
350      ENDIF
351
352   END SUBROUTINE lim_wri
353#endif
354
355   SUBROUTINE lim_wri_init
356      !!-------------------------------------------------------------------
357      !!                    ***   ROUTINE lim_wri_init  ***
358      !!               
359      !! ** Purpose :   ???
360      !!
361      !! ** Method  : Read the namicewri namelist and check the parameter
362      !!       values called at the first timestep (nit000)
363      !!
364      !! ** input   :   Namelist namicewri
365      !!-------------------------------------------------------------------
366      INTEGER ::   nf      ! ???
367
368      TYPE FIELD 
369         CHARACTER(len = 35) :: ztitle 
370         CHARACTER(len = 8 ) :: zname         
371         CHARACTER(len = 8 ) :: zunit
372         INTEGER             :: znc   
373         REAL                :: zcmulti 
374         REAL                :: zcadd       
375      END TYPE FIELD
376
377      TYPE(FIELD) ::  &
378         field_1 , field_2 , field_3 , field_4 , field_5 , field_6 ,   &
379         field_7 , field_8 , field_9 , field_10, field_11, field_12,   &
380         field_13, field_14, field_15, field_16, field_17, field_18,   &
381         field_19, field_20, field_21, field_22, field_23, field_24,   &
382         field_25, field_26, field_27, field_28, field_29, field_30,   &
383         field_31, field_32, field_33, field_34, field_35, field_36,   &
384         field_37
385
386      TYPE(FIELD) , DIMENSION(jpnoumax) :: zfield
387      !
388      NAMELIST/namiceout/ noumef, &
389         field_1 , field_2 , field_3 , field_4 , field_5 , field_6 ,   &
390         field_7 , field_8 , field_9 , field_10, field_11, field_12,   &
391         field_13, field_14, field_15, field_16, field_17, field_18,   &
392         field_19, field_20, field_21, field_22, field_23, field_24,   &
393         field_25, field_26, field_27, field_28, field_29, field_30,   &
394         field_31, field_32, field_33, field_34, field_35, field_36,   &
395         field_37, add_diag_swi
396      !!-------------------------------------------------------------------
397
398      REWIND( numnam_ice )                ! Read Namelist namicewri
399      READ  ( numnam_ice  , namiceout )
400
401      zfield(1)  = field_1
402      zfield(2)  = field_2
403      zfield(3)  = field_3
404      zfield(4)  = field_4
405      zfield(5)  = field_5
406      zfield(6)  = field_6
407      zfield(7)  = field_7
408      zfield(8)  = field_8
409      zfield(9)  = field_9
410      zfield(10) = field_10
411      zfield(11) = field_11
412      zfield(12) = field_12
413      zfield(13) = field_13
414      zfield(14) = field_14
415      zfield(15) = field_15
416      zfield(16) = field_16
417      zfield(17) = field_17
418      zfield(18) = field_18
419      zfield(19) = field_19
420      zfield(20) = field_20
421      zfield(21) = field_21
422      zfield(22) = field_22
423      zfield(23) = field_23
424      zfield(24) = field_24
425      zfield(25) = field_25
426      zfield(26) = field_26
427      zfield(27) = field_27
428      zfield(28) = field_28
429      zfield(29) = field_29
430      zfield(30) = field_30
431      zfield(31) = field_31
432      zfield(32) = field_32
433      zfield(33) = field_33
434      zfield(34) = field_34
435      zfield(35) = field_35
436      zfield(36) = field_36
437      zfield(37) = field_37
438
439      DO nf = 1, noumef
440         titn  (nf) = zfield(nf)%ztitle
441         nam   (nf) = zfield(nf)%zname
442         uni   (nf) = zfield(nf)%zunit
443         nc    (nf) = zfield(nf)%znc
444         cmulti(nf) = zfield(nf)%zcmulti
445         cadd  (nf) = zfield(nf)%zcadd
446      END DO
447
448      IF(lwp) THEN                        ! control print
449         WRITE(numout,*)
450         WRITE(numout,*) 'lim_wri_init : Ice parameters for outputs'
451         WRITE(numout,*) '~~~~~~~~~~~~'
452         WRITE(numout,*) '    number of fields to be stored         noumef = ', noumef
453         WRITE(numout,*) '           title                            name     unit      Saving (1/0) ',   &
454            &            '    multiplicative constant       additive constant '
455         DO nf = 1 , noumef         
456            WRITE(numout,*) '   ', titn(nf), '   '    , nam   (nf), '      '  , uni (nf),   &
457               &            '  ' , nc  (nf),'        ', cmulti(nf), '        ', cadd(nf)
458         END DO
459         WRITE(numout,*) ' add_diag_swi ', add_diag_swi
460      ENDIF
461      !
462   END SUBROUTINE lim_wri_init
463
464#else
465   !!----------------------------------------------------------------------
466   !!   Default option :         Empty module          NO LIM sea-ice model
467   !!----------------------------------------------------------------------
468CONTAINS
469   SUBROUTINE lim_wri          ! Empty routine
470   END SUBROUTINE lim_wri
471#endif
472
473   !!======================================================================
474END MODULE limwri
Note: See TracBrowser for help on using the repository browser.