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 @ 7698

Last change on this file since 7698 was 7698, checked in by mocavero, 7 years ago

update trunk with OpenMP parallelization

  • Property svn:keywords set to Id
File size: 21.5 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_state : write for initial state or/and abandon
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 ice
20   USE limvar
21   USE in_out_manager
22   USE lbclnk
23   USE lib_mpp         ! MPP library
24   USE wrk_nemo        ! work arrays
25   USE iom
26   USE timing          ! Timing
27   USE lib_fortran     ! Fortran utilities
28
29   IMPLICIT NONE
30   PRIVATE
31
32   PUBLIC lim_wri        ! routine called by lim_step.F90
33   PUBLIC lim_wri_state  ! called by dia_wri_state
34
35   !!----------------------------------------------------------------------
36   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
37   !! $Id$
38   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
39   !!----------------------------------------------------------------------
40CONTAINS
41
42
43   SUBROUTINE lim_wri( kindic )
44      !!-------------------------------------------------------------------
45      !!  This routine computes the average of some variables and write it
46      !!  on the ouput files.
47      !!  ATTENTION cette routine n'est valable que si le pas de temps est
48      !!  egale a une fraction entiere de 1 jours.
49      !!  Diff 1-D 3-D : suppress common also included in etat
50      !!                 suppress cmoymo 11-18
51      !!  modif : 03/06/98
52      !!-------------------------------------------------------------------
53      INTEGER, INTENT(in) ::   kindic   ! if kindic < 0 there has been an error somewhere
54      !
55      INTEGER  ::  ji, jj, jk, jl  ! dummy loop indices
56      REAL(wp) ::  z1_365
57      REAL(wp) ::  z2da, z2db, ztmp
58      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zswi2
59      REAL(wp), POINTER, DIMENSION(:,:)   ::  z2d, zswi    ! 2D workspace
60      !!-------------------------------------------------------------------
61
62      IF( nn_timing == 1 )  CALL timing_start('limwri')
63
64      CALL wrk_alloc( jpi,jpj,jpl, zswi2 )
65      CALL wrk_alloc( jpi,jpj    , z2d, zswi )
66
67      !-----------------------------
68      ! Mean category values
69      !-----------------------------
70      z1_365 = 1._wp / 365._wp
71
72      ! brine volume
73      CALL lim_var_bv 
74
75      ! tresholds for outputs
76!$OMP PARALLEL
77!$OMP DO schedule(static) private(jj,ji)
78      DO jj = 1, jpj
79         DO ji = 1, jpi
80            zswi(ji,jj)  = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi06 ) )
81         END DO
82      END DO
83      DO jl = 1, jpl
84!$OMP DO schedule(static) private(jj,ji)
85         DO jj = 1, jpj
86            DO ji = 1, jpi
87               zswi2(ji,jj,jl)  = MAX( 0._wp , SIGN( 1._wp , a_i(ji,jj,jl) - epsi06 ) )
88            END DO
89         END DO
90      END DO
91!$OMP END PARALLEL
92      !
93      ! fluxes
94      ! pfrld is the lead fraction at the previous time step (actually between TRP and THD)
95      IF( iom_use('qsr_oce') )   CALL iom_put( "qsr_oce" , qsr_oce(:,:) * pfrld(:,:) )                                   !     solar flux at ocean surface
96      IF( iom_use('qns_oce') )   CALL iom_put( "qns_oce" , qns_oce(:,:) * pfrld(:,:) + qemp_oce(:,:) )                   ! non-solar flux at ocean surface
97      IF( iom_use('qsr_ice') )   CALL iom_put( "qsr_ice" , SUM( qsr_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) )                 !     solar flux at ice surface
98      IF( iom_use('qns_ice') )   CALL iom_put( "qns_ice" , SUM( qns_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) + qemp_ice(:,:) ) ! non-solar flux at ice surface
99      IF( iom_use('qtr_ice') )   CALL iom_put( "qtr_ice" , SUM( ftr_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) )                 !     solar flux transmitted thru ice
100      IF( iom_use('qt_oce' ) )   CALL iom_put( "qt_oce"  , ( qsr_oce(:,:) + qns_oce(:,:) ) * pfrld(:,:) + qemp_oce(:,:) ) 
101      IF( iom_use('qt_ice' ) )   CALL iom_put( "qt_ice"  , SUM( ( qns_ice(:,:,:) + qsr_ice(:,:,:) )   &
102         &                                                      * a_i_b(:,:,:), dim=3 ) + qemp_ice(:,:) )
103      IF( iom_use('qemp_oce') )  CALL iom_put( "qemp_oce" , qemp_oce(:,:) ) 
104      IF( iom_use('qemp_ice') )  CALL iom_put( "qemp_ice" , qemp_ice(:,:) ) 
105      IF( iom_use('emp_oce' ) )  CALL iom_put( "emp_oce"  , emp_oce(:,:) )   ! emp over ocean (taking into account the snow blown away from the ice)
106      IF( iom_use('emp_ice' ) )  CALL iom_put( "emp_ice"  , emp_ice(:,:) )   ! emp over ice   (taking into account the snow blown away from the ice)
107
108      ! velocity
109      IF ( iom_use( "uice_ipa" ) .OR. iom_use( "vice_ipa" ) .OR. iom_use( "icevel" ) ) THEN 
110!$OMP PARALLEL DO schedule(static) private(jj,ji,z2da,z2db)
111         DO jj = 2 , jpjm1
112            DO ji = 2 , jpim1
113               z2da  = ( u_ice(ji,jj) * umask(ji,jj,1) + u_ice(ji-1,jj) * umask(ji-1,jj,1) ) * 0.5_wp
114               z2db  = ( v_ice(ji,jj) * vmask(ji,jj,1) + v_ice(ji,jj-1) * vmask(ji,jj-1,1) ) * 0.5_wp
115               z2d(ji,jj) = SQRT( z2da * z2da + z2db * z2db )
116           END DO
117         END DO
118         CALL lbc_lnk( z2d, 'T', 1. )
119         CALL iom_put( "uice_ipa"     , u_ice      )       ! ice velocity u component
120         CALL iom_put( "vice_ipa"     , v_ice      )       ! ice velocity v component
121         CALL iom_put( "icevel"       , z2d        )       ! ice velocity module
122      ENDIF
123
124      IF ( iom_use( "tau_icebfr" ) )    CALL iom_put( "tau_icebfr"  , tau_icebfr             )  ! ice friction with ocean bottom (landfast ice) 
125      !
126      IF ( iom_use( "miceage" ) )       CALL iom_put( "miceage"     , om_i * zswi * z1_365   )  ! mean ice age
127      IF ( iom_use( "icethic_cea" ) )   CALL iom_put( "icethic_cea" , htm_i * zswi           )  ! ice thickness mean
128      IF ( iom_use( "snowthic_cea" ) )  CALL iom_put( "snowthic_cea", htm_s * zswi           )  ! snow thickness mean
129      IF ( iom_use( "micet" ) )         CALL iom_put( "micet"       , ( tm_i  - rt0 ) * zswi )  ! ice mean    temperature
130      IF ( iom_use( "icest" ) )         CALL iom_put( "icest"       , ( tm_su - rt0 ) * zswi )  ! ice surface temperature
131      IF ( iom_use( "icecolf" ) )       CALL iom_put( "icecolf"     , hicol                  )  ! frazil ice collection thickness
132      !
133      CALL iom_put( "isst"        , sst_m               )        ! sea surface temperature
134      CALL iom_put( "isss"        , sss_m               )        ! sea surface salinity
135      CALL iom_put( "iceconc"     , at_i  * zswi        )        ! ice concentration
136      CALL iom_put( "icevolu"     , vt_i  * zswi        )        ! ice volume = mean ice thickness over the cell
137      CALL iom_put( "icehc"       , et_i  * zswi        )        ! ice total heat content
138      CALL iom_put( "isnowhc"     , et_s  * zswi        )        ! snow total heat content
139      CALL iom_put( "ibrinv"      , bvm_i * zswi * 100. )        ! brine volume
140      CALL iom_put( "utau_ice"    , utau_ice            )        ! wind stress over ice along i-axis at I-point
141      CALL iom_put( "vtau_ice"    , vtau_ice            )        ! wind stress over ice along j-axis at I-point
142      CALL iom_put( "snowpre"     , sprecip * 86400.    )        ! snow precipitation
143      CALL iom_put( "micesalt"    , smt_i   * zswi      )        ! mean ice salinity
144
145      CALL iom_put( "icestr"      , strength * zswi )    ! ice strength
146      CALL iom_put( "idive"       , divu_i * 1.0e8      )    ! divergence
147      CALL iom_put( "ishear"      , shear_i * 1.0e8     )    ! shear
148      CALL iom_put( "snowvol"     , vt_s   * zswi       )        ! snow volume
149     
150      CALL iom_put( "icetrp"      , diag_trp_vi * rday  )        ! ice volume transport
151      CALL iom_put( "snwtrp"      , diag_trp_vs * rday  )        ! snw volume transport
152      CALL iom_put( "saltrp"      , diag_trp_smv * rday * rhoic ) ! salt content transport
153      CALL iom_put( "deitrp"      , diag_trp_ei         )        ! advected ice enthalpy (W/m2)
154      CALL iom_put( "destrp"      , diag_trp_es         )        ! advected snw enthalpy (W/m2)
155
156      CALL iom_put( "sfxbog"      , sfx_bog * rday      )        ! salt flux from bottom growth
157      CALL iom_put( "sfxbom"      , sfx_bom * rday      )        ! salt flux from bottom melting
158      CALL iom_put( "sfxsum"      , sfx_sum * rday      )        ! salt flux from surface melting
159      CALL iom_put( "sfxlam"      , sfx_lam * rday      )        ! salt flux from lateral melting
160      CALL iom_put( "sfxsni"      , sfx_sni * rday      )        ! salt flux from snow ice formation
161      CALL iom_put( "sfxopw"      , sfx_opw * rday      )        ! salt flux from open water formation
162      CALL iom_put( "sfxdyn"      , sfx_dyn * rday      )        ! salt flux from ridging rafting
163      CALL iom_put( "sfxres"      , sfx_res * rday      )        ! salt flux from limupdate (resultant)
164      CALL iom_put( "sfxbri"      , sfx_bri * rday      )        ! salt flux from brines
165      CALL iom_put( "sfxsub"      , sfx_sub * rday      )        ! salt flux from sublimation
166      CALL iom_put( "sfx"         , sfx     * rday      )        ! total salt flux
167
168      ztmp = rday / rhoic
169      CALL iom_put( "vfxres"     , wfx_res * ztmp       )        ! daily prod./melting due to limupdate
170      CALL iom_put( "vfxopw"     , wfx_opw * ztmp       )        ! daily lateral thermodynamic ice production
171      CALL iom_put( "vfxsni"     , wfx_sni * ztmp       )        ! daily snowice ice production
172      CALL iom_put( "vfxbog"     , wfx_bog * ztmp       )        ! daily bottom thermodynamic ice production
173      CALL iom_put( "vfxdyn"     , wfx_dyn * ztmp       )        ! daily dynamic ice production (rid/raft)
174      CALL iom_put( "vfxsum"     , wfx_sum * ztmp       )        ! surface melt
175      CALL iom_put( "vfxbom"     , wfx_bom * ztmp       )        ! bottom melt
176      CALL iom_put( "vfxlam"     , wfx_lam * ztmp       )        ! lateral melt
177      CALL iom_put( "vfxice"     , wfx_ice * ztmp       )        ! total ice growth/melt
178
179      IF ( iom_use( "vfxthin" ) ) THEN   ! ice production for open water + thin ice (<20cm) => comparable to observations 
180!$OMP PARALLEL DO schedule(static) private(jj,ji)
181         DO jj = 1, jpj
182            DO ji = 1, jpi
183               IF (htm_i(ji,jj) < 0.2 .AND. htm_i(ji,jj) > 0. ) THEN
184                  z2d(ji,jj) = wfx_bog(ji,jj)
185               ELSE
186                  z2d(ji,jj) = 0._wp
187               END IF
188            END DO
189         END DO
190         CALL iom_put( "vfxthin", ( wfx_opw + z2d ) * ztmp )
191      ENDIF
192
193      ztmp = rday / rhosn
194      CALL iom_put( "vfxspr"     , wfx_spr * ztmp       )        ! precip (snow)
195      CALL iom_put( "vfxsnw"     , wfx_snw * ztmp       )        ! total snw growth/melt
196      CALL iom_put( "vfxsub"     , wfx_sub * ztmp       )        ! sublimation (snow/ice)
197      CALL iom_put( "vfxsub_err" , wfx_err_sub * ztmp   )        ! "excess" of sublimation sent to ocean
198     
199      CALL iom_put( "afxtot"     , afx_tot * rday       )        ! concentration tendency (total)
200      CALL iom_put( "afxdyn"     , afx_dyn * rday       )        ! concentration tendency (dynamics)
201      CALL iom_put( "afxthd"     , afx_thd * rday       )        ! concentration tendency (thermo)
202
203      CALL iom_put ('hfxthd'     , hfx_thd(:,:)         )   
204      CALL iom_put ('hfxdyn'     , hfx_dyn(:,:)         )   
205      CALL iom_put ('hfxres'     , hfx_res(:,:)         )   
206      CALL iom_put ('hfxout'     , hfx_out(:,:)         )   
207      CALL iom_put ('hfxin'      , hfx_in(:,:)          )   
208      CALL iom_put ('hfxsnw'     , hfx_snw(:,:)         )   
209      CALL iom_put ('hfxsub'     , hfx_sub(:,:)         )   
210      CALL iom_put ('hfxerr'     , hfx_err(:,:)         )   
211      CALL iom_put ('hfxerr_rem' , hfx_err_rem(:,:)     )   
212     
213      CALL iom_put ('hfxsum'     , hfx_sum(:,:)         )   
214      CALL iom_put ('hfxbom'     , hfx_bom(:,:)         )   
215      CALL iom_put ('hfxbog'     , hfx_bog(:,:)         )   
216      CALL iom_put ('hfxdif'     , hfx_dif(:,:)         )   
217      CALL iom_put ('hfxopw'     , hfx_opw(:,:)         )   
218      CALL iom_put ('hfxtur'     , fhtur(:,:) * at_i_b(:,:) ) ! turbulent heat flux at ice base
219      CALL iom_put ('hfxdhc'     , diag_heat(:,:)       )   ! Heat content variation in snow and ice
220      CALL iom_put ('hfxspr'     , hfx_spr(:,:)         )   ! Heat content of snow precip
221
222     
223      !--------------------------------
224      ! Output values for each category
225      !--------------------------------
226      IF ( iom_use( "iceconc_cat"  ) )  CALL iom_put( "iceconc_cat"      , a_i   * zswi2   )        ! area for categories
227      IF ( iom_use( "icethic_cat"  ) )  CALL iom_put( "icethic_cat"      , ht_i  * zswi2   )        ! thickness for categories
228      IF ( iom_use( "snowthic_cat" ) )  CALL iom_put( "snowthic_cat"     , ht_s  * zswi2   )        ! snow depth for categories
229      IF ( iom_use( "salinity_cat" ) )  CALL iom_put( "salinity_cat"     , sm_i  * zswi2   )        ! salinity for categories
230      ! ice temperature
231      IF ( iom_use( "icetemp_cat"  ) )  CALL iom_put( "icetemp_cat", ( SUM( t_i(:,:,:,:), dim=3 ) * r1_nlay_i - rt0 ) * zswi2 )
232      ! snow temperature
233      IF ( iom_use( "snwtemp_cat"  ) )  CALL iom_put( "snwtemp_cat", ( SUM( t_s(:,:,:,:), dim=3 ) * r1_nlay_s - rt0 ) * zswi2 )
234      ! ice age
235      IF ( iom_use( "iceage_cat"   ) )  CALL iom_put( "iceage_cat" , o_i * zswi2 * z1_365 )
236      ! brine volume
237      IF ( iom_use( "brinevol_cat" ) )  CALL iom_put( "brinevol_cat", bv_i * 100. * zswi2 )
238
239      !     !  Create an output files (output.lim.abort.nc) if S < 0 or u > 20 m/s
240      !     IF( kindic < 0 )   CALL lim_wri_state( 'output.abort' )
241      !     not yet implemented
242     
243      CALL wrk_dealloc( jpi, jpj, jpl, zswi2 )
244      CALL wrk_dealloc( jpi, jpj     , z2d, zswi )
245
246      IF( nn_timing == 1 )  CALL timing_stop('limwri')
247     
248   END SUBROUTINE lim_wri
249
250 
251   SUBROUTINE lim_wri_state( kt, kid, kh_i )
252      !!---------------------------------------------------------------------
253      !!                 ***  ROUTINE lim_wri_state  ***
254      !!       
255      !! ** Purpose :   create a NetCDF file named cdfile_name which contains
256      !!      the instantaneous ice state and forcing fields for ice model
257      !!        Used to find errors in the initial state or save the last
258      !!      ocean state in case of abnormal end of a simulation
259      !!
260      !! History :
261      !!   4.0  !  2013-06  (C. Rousset)
262      !!----------------------------------------------------------------------
263      INTEGER, INTENT( in )   ::   kt               ! ocean time-step index)
264      INTEGER, INTENT( in )   ::   kid , kh_i
265      INTEGER                 ::   nz_i, jl
266      REAL(wp), DIMENSION(jpl) :: jcat
267      !!----------------------------------------------------------------------
268      DO jl = 1, jpl
269         jcat(jl) = REAL(jl)
270      ENDDO
271     
272      CALL histvert( kid, "ncatice", "Ice Categories","", jpl, jcat, nz_i, "up")
273
274      CALL histdef( kid, "sithic", "Ice thickness"           , "m"      ,   &
275      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
276      CALL histdef( kid, "siconc", "Ice concentration"       , "%"      ,   &
277      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
278      CALL histdef( kid, "sitemp", "Ice temperature"         , "C"      ,   &
279      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
280      CALL histdef( kid, "sivelu", "i-Ice speed "            , "m/s"    ,   &
281      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
282      CALL histdef( kid, "sivelv", "j-Ice speed "            , "m/s"    ,   &
283      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
284      CALL histdef( kid, "sistru", "i-Wind stress over ice " , "Pa"     ,   &
285      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
286      CALL histdef( kid, "sistrv", "j-Wind stress over ice " , "Pa"     ,   &
287      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
288      CALL histdef( kid, "sisflx", "Solar flux over ocean"     , "w/m2" ,   &
289      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
290      CALL histdef( kid, "sinflx", "Non-solar flux over ocean" , "w/m2" ,   &
291      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
292      CALL histdef( kid, "isnowpre", "Snow precipitation"      , "kg/m2/s",   &
293      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
294      CALL histdef( kid, "sisali", "Ice salinity"            , "PSU"    ,   &
295      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
296      CALL histdef( kid, "sivolu", "Ice volume"              , "m"      ,   &
297      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
298      CALL histdef( kid, "sidive", "Ice divergence"          , "10-8s-1",   &
299      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
300
301      CALL histdef( kid, "vfxbog", "Ice bottom production"   , "m/s"    ,   &
302      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
303      CALL histdef( kid, "vfxdyn", "Ice dynamic production"  , "m/s"    ,   &
304      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
305      CALL histdef( kid, "vfxopw", "Ice open water prod"     , "m/s"    ,   &
306      &       jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
307      CALL histdef( kid, "vfxsni", "Snow ice production "    , "m/s"    ,   &
308      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
309      CALL histdef( kid, "vfxres", "Ice prod from limupdate" , "m/s"    ,   &
310      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
311      CALL histdef( kid, "vfxbom", "Ice bottom melt"         , "m/s"    ,   &
312      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
313      CALL histdef( kid, "vfxsum", "Ice surface melt"        , "m/s"    ,   &
314      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
315
316      CALL histdef( kid, "sithicat", "Ice thickness"         , "m"      ,   &
317      &      jpi, jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt )
318      CALL histdef( kid, "siconcat", "Ice concentration"     , "%"      ,   &
319      &      jpi, jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt )
320      CALL histdef( kid, "sisalcat", "Ice salinity"           , ""      ,   &
321      &      jpi, jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt )
322      CALL histdef( kid, "sitemcat", "Ice temperature"       , "C"      ,   &
323      &      jpi, jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt )
324      CALL histdef( kid, "snthicat", "Snw thickness"         , "m"      ,   &
325      &      jpi, jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt )
326      CALL histdef( kid, "sntemcat", "Snw temperature"       , "C"      ,   &
327      &      jpi, jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt )
328
329      CALL histend( kid, snc4set )   ! end of the file definition
330
331      CALL histwrite( kid, "sithic", kt, htm_i         , jpi*jpj, (/1/) )   
332      CALL histwrite( kid, "siconc", kt, at_i          , jpi*jpj, (/1/) )
333      CALL histwrite( kid, "sitemp", kt, tm_i - rt0    , jpi*jpj, (/1/) )
334      CALL histwrite( kid, "sivelu", kt, u_ice          , jpi*jpj, (/1/) )
335      CALL histwrite( kid, "sivelv", kt, v_ice          , jpi*jpj, (/1/) )
336      CALL histwrite( kid, "sistru", kt, utau_ice       , jpi*jpj, (/1/) )
337      CALL histwrite( kid, "sistrv", kt, vtau_ice       , jpi*jpj, (/1/) )
338      CALL histwrite( kid, "sisflx", kt, qsr , jpi*jpj, (/1/) )
339      CALL histwrite( kid, "sinflx", kt, qns , jpi*jpj, (/1/) )
340      CALL histwrite( kid, "isnowpre", kt, sprecip        , jpi*jpj, (/1/) )
341      CALL histwrite( kid, "sisali", kt, smt_i          , jpi*jpj, (/1/) )
342      CALL histwrite( kid, "sivolu", kt, vt_i           , jpi*jpj, (/1/) )
343      CALL histwrite( kid, "sidive", kt, divu_i*1.0e8   , jpi*jpj, (/1/) )
344
345      CALL histwrite( kid, "vfxbog", kt, wfx_bog        , jpi*jpj, (/1/) )
346      CALL histwrite( kid, "vfxdyn", kt, wfx_dyn        , jpi*jpj, (/1/) )
347      CALL histwrite( kid, "vfxopw", kt, wfx_opw        , jpi*jpj, (/1/) )
348      CALL histwrite( kid, "vfxsni", kt, wfx_sni        , jpi*jpj, (/1/) )
349      CALL histwrite( kid, "vfxres", kt, wfx_res        , jpi*jpj, (/1/) )
350      CALL histwrite( kid, "vfxbom", kt, wfx_bom        , jpi*jpj, (/1/) )
351      CALL histwrite( kid, "vfxsum", kt, wfx_sum        , jpi*jpj, (/1/) )
352
353      CALL histwrite( kid, "sithicat", kt, ht_i        , jpi*jpj*jpl, (/1/) )   
354      CALL histwrite( kid, "siconcat", kt, a_i         , jpi*jpj*jpl, (/1/) )   
355      CALL histwrite( kid, "sisalcat", kt, sm_i        , jpi*jpj*jpl, (/1/) )   
356      CALL histwrite( kid, "sitemcat", kt, tm_i - rt0  , jpi*jpj*jpl, (/1/) )   
357      CALL histwrite( kid, "snthicat", kt, ht_s        , jpi*jpj*jpl, (/1/) )   
358      CALL histwrite( kid, "sntemcat", kt, tm_su - rt0 , jpi*jpj*jpl, (/1/) )   
359
360      ! Close the file
361      ! -----------------
362      !CALL histclo( kid )
363
364    END SUBROUTINE lim_wri_state
365
366#else
367   !!----------------------------------------------------------------------
368   !!   Default option :         Empty module          NO LIM sea-ice model
369   !!----------------------------------------------------------------------
370CONTAINS
371   SUBROUTINE lim_wri          ! Empty routine
372   END SUBROUTINE lim_wri
373#endif
374
375   !!======================================================================
376END MODULE limwri
Note: See TracBrowser for help on using the repository browser.