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 branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3 – NEMO

source: branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90 @ 8411

Last change on this file since 8411 was 8409, checked in by clem, 7 years ago

change calls in icestp.F90 for advection

  • Property svn:keywords set to Id
File size: 36.5 KB
RevLine 
[825]1MODULE limwri
2   !!======================================================================
3   !!                     ***  MODULE  limwri  ***
4   !!         Ice diagnostics :  write ice output files
5   !!======================================================================
[888]6#if defined key_lim3
[825]7   !!----------------------------------------------------------------------
[2528]8   !!   'key_lim3'                                      LIM3 sea-ice model
[825]9   !!----------------------------------------------------------------------
10   !!   lim_wri      : write of the diagnostics variables in ouput file
[4161]11   !!   lim_wri_state : write for initial state or/and abandon
[825]12   !!----------------------------------------------------------------------
13   USE ioipsl
[888]14   USE dianam          ! build name of file (routine)
[825]15   USE phycst
16   USE dom_oce
[8316]17   USE sbc_oce
[888]18   USE sbc_ice         ! Surface boundary condition: ice fields
[825]19   USE ice
[2715]20   USE limvar
[8378]21   !
[2715]22   USE in_out_manager
[825]23   USE lbclnk
[2715]24   USE lib_mpp         ! MPP library
[4161]25   USE iom
26   USE timing          ! Timing
27   USE lib_fortran     ! Fortran utilities
[825]28
29   IMPLICIT NONE
30   PRIVATE
31
32   PUBLIC lim_wri        ! routine called by lim_step.F90
[4161]33   PUBLIC lim_wri_state  ! called by dia_wri_state
[825]34
[2528]35   !!----------------------------------------------------------------------
[4161]36   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
[2528]37   !! $Id$
[2715]38   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
[2528]39   !!----------------------------------------------------------------------
40CONTAINS
[825]41
42   SUBROUTINE lim_wri( kindic )
43      !!-------------------------------------------------------------------
44      !!  This routine computes the average of some variables and write it
45      !!  on the ouput files.
46      !!  ATTENTION cette routine n'est valable que si le pas de temps est
47      !!  egale a une fraction entiere de 1 jours.
48      !!  Diff 1-D 3-D : suppress common also included in etat
49      !!                 suppress cmoymo 11-18
50      !!  modif : 03/06/98
51      !!-------------------------------------------------------------------
[2715]52      INTEGER, INTENT(in) ::   kindic   ! if kindic < 0 there has been an error somewhere
53      !
[4990]54      INTEGER  ::  ji, jj, jk, jl  ! dummy loop indices
[8266]55      REAL(wp) ::  z2da, z2db, ztmp, zrho1, zrho2, zmiss_val
[8291]56      REAL(wp) ::  zs12, zshear
[8373]57      REAL(wp), DIMENSION(jpi,jpj,jpl) ::  zswi2, zmiss2
58      REAL(wp), DIMENSION(jpi,jpj)   ::  z2d, zswi, zmiss !  2D workspace
59      REAL(wp), DIMENSION(jpi,jpj)   ::  zfb              ! ice freeboard
60      REAL(wp), DIMENSION(jpi,jpj)   ::  zamask, zamask15 ! 15% concentration mask
61      REAL(wp), DIMENSION(jpi,jpj)   ::  zsig1, zsig2, zsig3
[8239]62
63      ! Global ice diagnostics (SIMIP)
64      REAL(wp) ::  zdiag_area_nh, &   ! area, extent, volume
65         &         zdiag_extt_nh, &
66         &         zdiag_area_sh, & 
67         &         zdiag_extt_sh, & 
68         &         zdiag_volu_nh, & 
69         &         zdiag_volu_sh 
70
[2715]71      !!-------------------------------------------------------------------
[825]72
[4161]73      IF( nn_timing == 1 )  CALL timing_start('limwri')
74
[8266]75      !----------------------------------------
76      ! Brine volume, switches, missing values
77      !----------------------------------------
78
[7646]79      ! brine volume
80      CALL lim_var_bv 
[921]81
[7646]82      ! tresholds for outputs
83      DO jj = 1, jpj
[4688]84         DO ji = 1, jpi
[8239]85            zswi(ji,jj)      = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi06 ) ) ! 1 if ice, 0 if no ice
86            zamask(ji,jj)    = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - 0.05   ) ) ! 1 if 5% ice, 0 if less - required to mask thickness and snow depth
87            zamask15(ji,jj)  = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - 0.15   ) ) ! 1 if 15% ice, 0 if less
[4688]88         END DO
89      END DO
[7646]90      DO jl = 1, jpl
91         DO jj = 1, jpj
[4688]92            DO ji = 1, jpi
[7646]93               zswi2(ji,jj,jl)  = MAX( 0._wp , SIGN( 1._wp , a_i(ji,jj,jl) - epsi06 ) )
[4688]94            END DO
95         END DO
[7646]96      END DO
[8266]97
[8289]98      zmiss_val     = 1.0e20
[8266]99      zmiss(:,:)    = zmiss_val * ( 1. - zswi(:,:) )
100      zmiss2(:,:,:) = zmiss_val * ( 1. - zswi2(:,:,:) )
101
102      !----------------------------------------
103      ! Standard outputs
104      !----------------------------------------
105      ! fluxes
[8313]106      IF( iom_use('qsr_oce') )   CALL iom_put( "qsr_oce" , qsr_oce(:,:) * ( 1._wp - at_i_b(:,:) ) )                      !     solar flux at ocean surface
107      IF( iom_use('qns_oce') )   CALL iom_put( "qns_oce" , qns_oce(:,:) * ( 1._wp - at_i_b(:,:) ) + qemp_oce(:,:) )      ! non-solar flux at ocean surface
[7646]108      IF( iom_use('qsr_ice') )   CALL iom_put( "qsr_ice" , SUM( qsr_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) )                 !     solar flux at ice surface
109      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
110      IF( iom_use('qtr_ice') )   CALL iom_put( "qtr_ice" , SUM( ftr_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) )                 !     solar flux transmitted thru ice
[8313]111      IF( iom_use('qt_oce' ) )   CALL iom_put( "qt_oce"  , ( qsr_oce(:,:) + qns_oce(:,:) ) * ( 1._wp - at_i_b(:,:) ) + qemp_oce(:,:) )
[7646]112      IF( iom_use('qt_ice' ) )   CALL iom_put( "qt_ice"  , SUM( ( qns_ice(:,:,:) + qsr_ice(:,:,:) )   &
113         &                                                      * a_i_b(:,:,:), dim=3 ) + qemp_ice(:,:) )
114      IF( iom_use('qemp_oce') )  CALL iom_put( "qemp_oce" , qemp_oce(:,:) ) 
115      IF( iom_use('qemp_ice') )  CALL iom_put( "qemp_ice" , qemp_ice(:,:) ) 
116      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)
117      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)
[921]118
[7646]119      ! velocity
[8266]120      IF ( iom_use('uice_ipa') ) CALL iom_put( "uice_ipa"     , u_ice      )       ! ice velocity u component
121      IF ( iom_use('vice_ipa') ) CALL iom_put( "vice_ipa"     , v_ice      )       ! ice velocity v component
122
123      IF ( ( iom_use( "icevel" ) ) .OR. ( iom_use( "icevel_mv" ) ) ) THEN
[4688]124         DO jj = 2 , jpjm1
125            DO ji = 2 , jpim1
[7646]126               z2da  = ( u_ice(ji,jj) * umask(ji,jj,1) + u_ice(ji-1,jj) * umask(ji-1,jj,1) ) * 0.5_wp
127               z2db  = ( v_ice(ji,jj) * vmask(ji,jj,1) + v_ice(ji,jj-1) * vmask(ji,jj-1,1) ) * 0.5_wp
128               z2d(ji,jj) = SQRT( z2da * z2da + z2db * z2db )
[4688]129           END DO
130         END DO
[7646]131         CALL lbc_lnk( z2d, 'T', 1. )
[8266]132         IF ( iom_use( "icevel" )  )   CALL iom_put( "icevel"       , z2d        )                                            ! ice velocity module
133         IF ( iom_use( "icevel_mv" ) ) CALL iom_put( "icevel_mv"    , z2d(:,:) * zswi(:,:) + zmiss(:,:) )                     ! ice velocity module (missing value)
[4688]134      ENDIF
[825]135
[7646]136      IF ( iom_use( "tau_icebfr" ) )    CALL iom_put( "tau_icebfr"  , tau_icebfr             )  ! ice friction with ocean bottom (landfast ice) 
[4688]137      !
[8239]138      IF ( iom_use( "miceage" ) )       CALL iom_put( "miceage"     , om_i * zswi * zamask15 )  ! mean ice age
[7646]139      IF ( iom_use( "micet" ) )         CALL iom_put( "micet"       , ( tm_i  - rt0 ) * zswi )  ! ice mean    temperature
140      IF ( iom_use( "icest" ) )         CALL iom_put( "icest"       , ( tm_su - rt0 ) * zswi )  ! ice surface temperature
141      IF ( iom_use( "icecolf" ) )       CALL iom_put( "icecolf"     , hicol                  )  ! frazil ice collection thickness
142      !
[4688]143      CALL iom_put( "isst"        , sst_m               )        ! sea surface temperature
144      CALL iom_put( "isss"        , sss_m               )        ! sea surface salinity
[7646]145      CALL iom_put( "iceconc"     , at_i  * zswi        )        ! ice concentration
146      CALL iom_put( "icevolu"     , vt_i  * zswi        )        ! ice volume = mean ice thickness over the cell
[8294]147      CALL iom_put( "icethick"    , htm_i * zswi        )        ! ice thickness
[7646]148      CALL iom_put( "icehc"       , et_i  * zswi        )        ! ice total heat content
149      CALL iom_put( "isnowhc"     , et_s  * zswi        )        ! snow total heat content
150      CALL iom_put( "ibrinv"      , bvm_i * zswi * 100. )        ! brine volume
[5407]151      CALL iom_put( "snowpre"     , sprecip * 86400.    )        ! snow precipitation
[7646]152      CALL iom_put( "micesalt"    , smt_i   * zswi      )        ! mean ice salinity
[8272]153      CALL iom_put( "snowvol"     , vt_s    * zswi      )        ! snow volume
[4161]154
[8272]155      CALL iom_put( "idive"       , divu_i(:,:)  * zswi(:,:) + zmiss(:,:) )   ! divergence
156      CALL iom_put( "ishear"      , shear_i(:,:) * zswi(:,:) + zmiss(:,:) )   ! shear
[4688]157     
158      CALL iom_put( "icetrp"      , diag_trp_vi * rday  )        ! ice volume transport
159      CALL iom_put( "snwtrp"      , diag_trp_vs * rday  )        ! snw volume transport
[5123]160      CALL iom_put( "saltrp"      , diag_trp_smv * rday * rhoic ) ! salt content transport
[4688]161      CALL iom_put( "deitrp"      , diag_trp_ei         )        ! advected ice enthalpy (W/m2)
162      CALL iom_put( "destrp"      , diag_trp_es         )        ! advected snw enthalpy (W/m2)
[921]163
[6418]164      CALL iom_put( "sfxbog"      , sfx_bog * rday      )        ! salt flux from bottom growth
[7646]165      CALL iom_put( "sfxbom"      , sfx_bom * rday      )        ! salt flux from bottom melting
166      CALL iom_put( "sfxsum"      , sfx_sum * rday      )        ! salt flux from surface melting
167      CALL iom_put( "sfxlam"      , sfx_lam * rday      )        ! salt flux from lateral melting
[6418]168      CALL iom_put( "sfxsni"      , sfx_sni * rday      )        ! salt flux from snow ice formation
169      CALL iom_put( "sfxopw"      , sfx_opw * rday      )        ! salt flux from open water formation
[4688]170      CALL iom_put( "sfxdyn"      , sfx_dyn * rday      )        ! salt flux from ridging rafting
[8409]171      CALL iom_put( "sfxres"      , sfx_res * rday      )        ! salt flux from corrections (resultant)
[4688]172      CALL iom_put( "sfxbri"      , sfx_bri * rday      )        ! salt flux from brines
[6418]173      CALL iom_put( "sfxsub"      , sfx_sub * rday      )        ! salt flux from sublimation
[4688]174      CALL iom_put( "sfx"         , sfx     * rday      )        ! total salt flux
[825]175
[4990]176      ztmp = rday / rhoic
[8409]177      CALL iom_put( "vfxres"     , wfx_res * ztmp       )        ! daily prod./melting due to corrections
[5123]178      CALL iom_put( "vfxopw"     , wfx_opw * ztmp       )        ! daily lateral thermodynamic ice production
179      CALL iom_put( "vfxsni"     , wfx_sni * ztmp       )        ! daily snowice ice production
180      CALL iom_put( "vfxbog"     , wfx_bog * ztmp       )        ! daily bottom thermodynamic ice production
181      CALL iom_put( "vfxdyn"     , wfx_dyn * ztmp       )        ! daily dynamic ice production (rid/raft)
182      CALL iom_put( "vfxsum"     , wfx_sum * ztmp       )        ! surface melt
183      CALL iom_put( "vfxbom"     , wfx_bom * ztmp       )        ! bottom melt
[7646]184      CALL iom_put( "vfxlam"     , wfx_lam * ztmp       )        ! lateral melt
[5123]185      CALL iom_put( "vfxice"     , wfx_ice * ztmp       )        ! total ice growth/melt
[7646]186
[8233]187      IF ( ln_pnd ) &
188         CALL iom_put( "vfxpnd"  , wfx_pnd * ztmp       )        ! melt pond water flux
189
[7646]190      IF ( iom_use( "vfxthin" ) ) THEN   ! ice production for open water + thin ice (<20cm) => comparable to observations 
[7753]191         WHERE( htm_i(:,:) < 0.2 .AND. htm_i(:,:) > 0. ) ; z2d = wfx_bog
192         ELSEWHERE                                       ; z2d = 0._wp
193         END WHERE
[7646]194         CALL iom_put( "vfxthin", ( wfx_opw + z2d ) * ztmp )
195      ENDIF
196
197      ztmp = rday / rhosn
198      CALL iom_put( "vfxspr"     , wfx_spr * ztmp       )        ! precip (snow)
[5123]199      CALL iom_put( "vfxsnw"     , wfx_snw * ztmp       )        ! total snw growth/melt
[7646]200      CALL iom_put( "vfxsub"     , wfx_sub * ztmp       )        ! sublimation (snow/ice)
[8239]201      CALL iom_put( "vfxsub_err" , wfx_err_sub * ztmp   )        ! "excess" of sublimation sent to ocean     
202 
203      CALL iom_put( "afxtot"     , afx_tot              )        ! concentration tendency (total)
204      CALL iom_put( "afxdyn"     , afx_dyn              )        ! concentration tendency (dynamics)
205      CALL iom_put( "afxthd"     , afx_thd              )        ! concentration tendency (thermo)
[825]206
[5123]207      CALL iom_put ('hfxthd'     , hfx_thd(:,:)         )   
208      CALL iom_put ('hfxdyn'     , hfx_dyn(:,:)         )   
209      CALL iom_put ('hfxres'     , hfx_res(:,:)         )   
210      CALL iom_put ('hfxout'     , hfx_out(:,:)         )   
211      CALL iom_put ('hfxin'      , hfx_in(:,:)          )   
212      CALL iom_put ('hfxsnw'     , hfx_snw(:,:)         )   
213      CALL iom_put ('hfxsub'     , hfx_sub(:,:)         )   
214      CALL iom_put ('hfxerr'     , hfx_err(:,:)         )   
215      CALL iom_put ('hfxerr_rem' , hfx_err_rem(:,:)     )   
[4688]216     
[5123]217      CALL iom_put ('hfxsum'     , hfx_sum(:,:)         )   
218      CALL iom_put ('hfxbom'     , hfx_bom(:,:)         )   
219      CALL iom_put ('hfxbog'     , hfx_bog(:,:)         )   
220      CALL iom_put ('hfxdif'     , hfx_dif(:,:)         )   
221      CALL iom_put ('hfxopw'     , hfx_opw(:,:)         )   
[7646]222      CALL iom_put ('hfxtur'     , fhtur(:,:) * at_i_b(:,:) ) ! turbulent heat flux at ice base
[5167]223      CALL iom_put ('hfxdhc'     , diag_heat(:,:)       )   ! Heat content variation in snow and ice
[5123]224      CALL iom_put ('hfxspr'     , hfx_spr(:,:)         )   ! Heat content of snow precip
[7646]225
[8291]226      ! specific outputs for EVP rheology
227      IF( iom_use( "isig1" ) .OR. iom_use( "isig2" ) .OR. iom_use( "isig3" ) ) THEN
228         zsig1(:,:) = 0._wp; zsig2(:,:) = 0._wp; zsig3(:,:) = 0._wp;
229         DO jj = 2, jpjm1
230            DO ji = 2, jpim1
231               zs12 = ( zswi(ji-1,jj) * stress12_i(ji-1,jj) + zswi(ji  ,jj-1) * stress12_i(ji  ,jj-1) +  &  ! stress12_i at T-point
232                  &     zswi(ji  ,jj) * stress12_i(ji  ,jj) + zswi(ji-1,jj-1) * stress12_i(ji-1,jj-1) )  &
233                  &   / MAX( 1._wp, zswi(ji-1,jj) + zswi(ji,jj-1) + zswi(ji,jj) + zswi(ji-1,jj-1) )
234
235               zshear = SQRT( stress2_i(ji,jj) * stress2_i(ji,jj) + 4._wp * zs12 * zs12 ) ! shear stress 
236
237               z2da = zswi(ji,jj) / MAX( 1._wp, strength(ji,jj) )
238
239!!               zsig1(ji,jj) = 0.5_wp * z2da * ( stress1_i(ji,jj) + zshear ) ! principal stress (y-direction, see Hunke & Dukowicz 2002)
240!!               zsig2(ji,jj) = 0.5_wp * z2da * ( stress1_i(ji,jj) - zshear ) ! principal stress (x-direction, see Hunke & Dukowicz 2002)
241!!               zsig3(ji,jj) = z2da**2 * ( ( stress1_i(ji,jj) + strength(ji,jj) )**2 + ( rn_ecc * zshear )**2 ) ! quadratic relation linking compressive stress to shear stress
242!!                                                                                                               ! (scheme converges if this value is ~1, see Bouillon et al 2009 (eq. 11))
243               zsig1(ji,jj) = 0.5_wp * z2da * ( stress1_i(ji,jj) )          ! compressive stress, see Bouillon et al. 2015
244               zsig2(ji,jj) = 0.5_wp * z2da * ( zshear )                    ! shear stress
245               zsig3(ji,jj) = z2da**2 * ( ( stress1_i(ji,jj) + strength(ji,jj) )**2 + ( rn_ecc * zshear )**2 )
246            END DO
247         END DO
248         CALL lbc_lnk_multi( zsig1, 'T', 1., zsig2, 'T', 1., zsig3, 'T', 1. )
249         CALL iom_put( "isig1" , zsig1 )
250         CALL iom_put( "isig2" , zsig2 )
251         CALL iom_put( "isig3" , zsig3 )
252      ENDIF
253
[8233]254      ! MV MP 2016
255      IF ( ln_pnd ) THEN
256         CALL iom_put( "iceamp"  , at_ip  * zswi        )   ! melt pond total fraction
257         CALL iom_put( "icevmp"  , vt_ip  * zswi        )   ! melt pond total volume per unit area
258      ENDIF
259      ! END MV MP 2016
260
[8239]261      !----------------------------------
262      ! Output category-dependent fields
263      !----------------------------------
[7646]264      IF ( iom_use( "iceconc_cat"  ) )  CALL iom_put( "iceconc_cat"      , a_i   * zswi2   )        ! area for categories
265      IF ( iom_use( "icethic_cat"  ) )  CALL iom_put( "icethic_cat"      , ht_i  * zswi2   )        ! thickness for categories
266      IF ( iom_use( "snowthic_cat" ) )  CALL iom_put( "snowthic_cat"     , ht_s  * zswi2   )        ! snow depth for categories
267      IF ( iom_use( "salinity_cat" ) )  CALL iom_put( "salinity_cat"     , sm_i  * zswi2   )        ! salinity for categories
[5517]268      ! ice temperature
[7646]269      IF ( iom_use( "icetemp_cat"  ) )  CALL iom_put( "icetemp_cat", ( SUM( t_i(:,:,:,:), dim=3 ) * r1_nlay_i - rt0 ) * zswi2 )
[5517]270      ! snow temperature
[7646]271      IF ( iom_use( "snwtemp_cat"  ) )  CALL iom_put( "snwtemp_cat", ( SUM( t_s(:,:,:,:), dim=3 ) * r1_nlay_s - rt0 ) * zswi2 )
272      ! ice age
[8239]273      IF ( iom_use( "iceage_cat"   ) )  CALL iom_put( "iceage_cat" , o_i * zswi2 ) 
[7646]274      ! brine volume
275      IF ( iom_use( "brinevol_cat" ) )  CALL iom_put( "brinevol_cat", bv_i * 100. * zswi2 )
[5517]276
[8233]277      ! MV MP 2016
278      IF ( ln_pnd ) THEN
279         IF ( iom_use( "iceamp_cat"  ) )  CALL iom_put( "iceamp_cat"     , a_ip       * zswi2   )       ! melt pond frac for categories
280         IF ( iom_use( "icevmp_cat"  ) )  CALL iom_put( "icevmp_cat"     , v_ip       * zswi2   )       ! melt pond frac for categories
281         IF ( iom_use( "icehmp_cat"  ) )  CALL iom_put( "icehmp_cat"     , h_ip       * zswi2   )       ! melt pond frac for categories
282         IF ( iom_use( "iceafp_cat"  ) )  CALL iom_put( "iceafp_cat"     , a_ip_frac  * zswi2   )       ! melt pond frac for categories
283      ENDIF
284      ! END MV MP 2016
285
[8239]286      !--------------------------------
287      ! Add-ons for SIMIP
288      !--------------------------------
289      zrho1 = ( rau0 - rhoic ) / rau0; zrho2 = rhosn / rau0
290
[8272]291      IF  ( iom_use( "icepres"  ) ) CALL iom_put( "icepres"     , zswi(:,:)                     )                                ! Ice presence (1 or 0)
292      IF  ( iom_use( "icemass"  ) ) CALL iom_put( "icemass"     , rhoic * vt_i(:,:) * zswi(:,:) )                                ! Ice mass per cell area
293      IF  ( iom_use( "icethic"  ) ) CALL iom_put( "icethic"     , htm_i(:,:) * zamask(:,:)  + ( 1. - zamask(:,:) ) * zmiss_val )     ! Ice thickness
294      IF  ( iom_use( "snomass"  ) ) CALL iom_put( "snomass"     , rhosn * vt_s(:,:)         * zswi(:,:) + zmiss(:,:) )           ! Snow mass per cell area
295      IF  ( iom_use( "snothic"  ) ) CALL iom_put( "snothic"     , htm_s(:,:) * zamask(:,:)  + ( 1. - zamask(:,:) ) * zmiss_val )     ! Snow thickness       
[8266]296
[8272]297      IF  ( iom_use( "iceconc_cat_mv"  ) )  CALL iom_put( "iceconc_cat_mv" , a_i(:,:,:)  * zswi2(:,:,:) + zmiss2(:,:,:) )        ! Area for categories
298      IF  ( iom_use( "icethic_cat_mv"  ) )  CALL iom_put( "icethic_cat_mv" , ht_i(:,:,:) * zswi2(:,:,:) + zmiss2(:,:,:) )        ! Thickness for categories
299      IF  ( iom_use( "snowthic_cat_mv" ) )  CALL iom_put( "snowthic_cat_mv", ht_s(:,:,:) * zswi2(:,:,:) + zmiss2(:,:,:) )        ! Snow depth for categories
[8266]300
[8272]301      IF  ( iom_use( "icestK"   ) ) CALL iom_put( "icestK"      , tm_su(:,:)                * zswi(:,:) + zmiss(:,:) )           ! Ice surface temperature
302      IF  ( iom_use( "icesntK"  ) ) CALL iom_put( "icesntK"     , tm_si(:,:)                * zswi(:,:) + zmiss(:,:) )           ! Snow-ice interface temperature
303      IF  ( iom_use( "icebotK"  ) ) CALL iom_put( "icebotK"     , t_bo(:,:)                 * zswi(:,:) + zmiss(:,:) )           ! Ice bottom temperature
304      IF  ( iom_use( "iceage"   ) ) CALL iom_put( "iceage"      , om_i(:,:) * zamask15(:,:) + ( 1. - zamask15(:,:) ) * zmiss_val )   ! Ice age
305      IF  ( iom_use( "icesmass" ) ) CALL iom_put( "icesmass"    , SUM( smv_i, DIM = 3 ) * rhoic * 1.0e-3 * zswi(:,:) )           ! Mass of salt in sea ice per cell area
306      IF  ( iom_use( "icesal"   ) ) CALL iom_put( "icesal"      , smt_i(:,:)                * zswi(:,:) + zmiss(:,:) )           ! Ice salinity
[8266]307
[8239]308      IF  ( iom_use( "icefb"    ) ) THEN
[8266]309         zfb(:,:) = ( zrho1 * htm_i(:,:) - zrho2 * htm_s(:,:) )                                         
[8239]310         WHERE( zfb < 0._wp ) ;   zfb = 0._wp ;   END WHERE
[8272]311                                    CALL iom_put( "icefb"       , zfb(:,:)                  * zswi(:,:) + zmiss(:,:) )           ! Ice freeboard
[8239]312      ENDIF
[8266]313
[8272]314      IF  ( iom_use( "isnhcneg" ) ) CALL iom_put( "isnhcneg"    , - et_s(:,:)               * zswi(:,:) + zmiss(:,:) )           ! Snow total heat content
[8266]315
316      IF  ( iom_use( "dmithd"   ) ) CALL iom_put( "dmithd"      , - wfx_bog - wfx_bom - wfx_sum   &                       ! Sea-ice mass change from thermodynamics
[8239]317              &                     - wfx_sni - wfx_opw - wfx_res )
[8266]318      IF  ( iom_use( "dmidyn"   ) ) CALL iom_put( "dmidyn"      ,   diag_dmi_dyn             )                            ! Sea-ice mass change from dynamics
319      IF  ( iom_use( "dmiopw"   ) ) CALL iom_put( "dmiopw"      , - wfx_opw                  )                            ! Sea-ice mass change through growth in open water
320      IF  ( iom_use( "dmibog"   ) ) CALL iom_put( "dmibog"      , - wfx_bog                  )                            ! Sea-ice mass change through basal growth
321      IF  ( iom_use( "dmisni"   ) ) CALL iom_put( "dmisni"      , - wfx_sni                  )                            ! Sea-ice mass change through snow-to-ice conversion
322      IF  ( iom_use( "dmisum"   ) ) CALL iom_put( "dmisum"      , - wfx_sum                  )                            ! Sea-ice mass change through surface melting
323      IF  ( iom_use( "dmibom"   ) ) CALL iom_put( "dmibom"      , - wfx_bom                  )                            ! Sea-ice mass change through bottom melting
[8239]324
[8266]325      IF  ( iom_use( "dmtsub"   ) ) CALL iom_put( "dmtsub"      , - wfx_sub                  )                            ! Sea-ice mass change through evaporation and sublimation
326      IF  ( iom_use( "dmssub"   ) ) CALL iom_put( "dmssub"      , - wfx_snw_sub              )                            ! Snow mass change through sublimation
327      IF  ( iom_use( "dmisub"   ) ) CALL iom_put( "dmisub"      , - wfx_ice_sub              )                            ! Sea-ice mass change through sublimation
[8239]328
[8266]329      IF  ( iom_use( "dmsspr"   ) ) CALL iom_put( "dmsspr"      , - wfx_spr                  )                            ! Snow mass change through snow fall
330      IF  ( iom_use( "dmsssi"   ) ) CALL iom_put( "dmsssi"      ,   wfx_sni*rhosn/rhoic      )                            ! Snow mass change through snow-to-ice conversion
[8239]331
[8266]332      IF  ( iom_use( "dmsmel"   ) ) CALL iom_put( "dmsmel"      , - wfx_snw_sum              )                            ! Snow mass change through melt
333      IF  ( iom_use( "dmsdyn"   ) ) CALL iom_put( "dmsdyn"      ,   diag_dms_dyn             )                            ! Snow mass change through dynamics
[8239]334
[8266]335      IF  ( iom_use( "hfxsenso" ) ) CALL iom_put( "hfxsenso"    ,   -fhtur(:,:)              * zswi(:,:) + zmiss(:,:) )   ! Sensible oceanic heat flux
336      IF  ( iom_use( "hfxconbo" ) ) CALL iom_put( "hfxconbo"    ,   diag_fc_bo               * zswi(:,:) + zmiss(:,:) )   ! Bottom conduction flux
337      IF  ( iom_use( "hfxconsu" ) ) CALL iom_put( "hfxconsu"    ,   diag_fc_su               * zswi(:,:) + zmiss(:,:) )   ! Surface conduction flux
[8239]338
[8266]339      IF  ( iom_use( "wfxtot"   ) ) CALL iom_put( "wfxtot"      ,   wfx_ice(:,:)             * zswi(:,:) + zmiss(:,:) )   ! Total freshwater flux from sea ice
340      IF  ( iom_use( "wfxsum"   ) ) CALL iom_put( "wfxsum"      ,   wfx_sum(:,:)             * zswi(:,:) + zmiss(:,:) )   ! Freshwater flux from sea-ice surface
341      IF  ( iom_use( "sfx_mv"   ) ) CALL iom_put( "sfx_mv"      ,   sfx(:,:) * 0.001         * zswi(:,:) + zmiss(:,:) )   ! Total salt flux
[8239]342
[8266]343      IF  ( iom_use( "uice_mv"  ) ) CALL iom_put( "uice_mv"     ,   u_ice(:,:)               * zswi(:,:) + zmiss(:,:) )   ! ice velocity u component
344      IF  ( iom_use( "vice_mv"  ) ) CALL iom_put( "vice_mv"     ,   v_ice(:,:)               * zswi(:,:) + zmiss(:,:) )   ! ice velocity v component
345     
346      IF  ( iom_use( "xmtrpice" ) ) CALL iom_put( "xmtrpice"     ,  diag_xmtrp_ice(:,:)      )                            ! X-component of sea-ice mass transport (kg/s)
347      IF  ( iom_use( "ymtrpice" ) ) CALL iom_put( "ymtrpice"     ,  diag_ymtrp_ice(:,:)      )                            ! Y-component of sea-ice mass transport
[8239]348
[8266]349      IF  ( iom_use( "xmtrpsnw" ) ) CALL iom_put( "xmtrpsnw"     ,  diag_xmtrp_snw(:,:)      )                            ! X-component of snow mass transport (kg/s)
350      IF  ( iom_use( "ymtrpsnw" ) ) CALL iom_put( "ymtrpsnw"     ,  diag_ymtrp_snw(:,:)      )                            ! Y-component of snow mass transport
[8239]351
[8266]352      IF  ( iom_use( "xatrp"    ) ) CALL iom_put( "xatrp"        ,  diag_xatrp(:,:)              )                        ! X-component of ice area transport
353      IF  ( iom_use( "yatrp"    ) ) CALL iom_put( "yatrp"        ,  diag_yatrp(:,:)              )                        ! Y-component of ice area transport
[8239]354
[8266]355      IF  ( iom_use( "utau_ice" ) ) CALL iom_put( "utau_ice"     ,  utau_ice(:,:)            * zswi(:,:) + zmiss(:,:) )   ! Wind stress term in force balance (x)
356      IF  ( iom_use( "vtau_ice" ) ) CALL iom_put( "vtau_ice"     ,  vtau_ice(:,:)            * zswi(:,:) + zmiss(:,:) )   ! Wind stress term in force balance (y)
[8239]357
[8266]358      IF  ( iom_use( "utau_oi"  ) ) CALL iom_put( "utau_oi"     ,   diag_utau_oi(:,:)        * zswi(:,:) + zmiss(:,:) )   ! Ocean stress term in force balance (x)
359      IF  ( iom_use( "vtau_oi"  ) ) CALL iom_put( "vtau_oi"     ,   diag_vtau_oi(:,:)        * zswi(:,:) + zmiss(:,:) )   ! Ocean stress term in force balance (y)
[8239]360
[8266]361      IF  ( iom_use( "icestr"   ) ) CALL iom_put( "icestr"      ,   strength(:,:)            * zswi(:,:) + zmiss(:,:) )   ! Ice strength
[8239]362
[8266]363      IF  ( iom_use( "dssh_dx"  ) ) CALL iom_put( "dssh_dx"     ,   diag_dssh_dx(:,:)        * zswi(:,:) + zmiss(:,:) )   ! Sea-surface tilt term in force balance (x)
364      IF  ( iom_use( "dssh_dy"  ) ) CALL iom_put( "dssh_dy"     ,   diag_dssh_dy(:,:)        * zswi(:,:) + zmiss(:,:) )   ! Sea-surface tilt term in force balance (y)
[8239]365
[8266]366      IF  ( iom_use( "corstrx"  ) ) CALL iom_put( "corstrx"     ,   diag_corstrx(:,:)        * zswi(:,:) + zmiss(:,:) )   ! Coriolis force term in force balance (x)
367      IF  ( iom_use( "corstry"  ) ) CALL iom_put( "corstry"     ,   diag_corstry(:,:)        * zswi(:,:) + zmiss(:,:) )   ! Coriolis force term in force balance (y)
[8239]368
[8266]369      IF  ( iom_use( "intstrx"  ) ) CALL iom_put( "intstrx"     ,   diag_intstrx(:,:)        * zswi(:,:) + zmiss(:,:) )   ! Internal force term in force balance (x)
370      IF  ( iom_use( "intstry"  ) ) CALL iom_put( "intstry"     ,   diag_intstry(:,:)        * zswi(:,:) + zmiss(:,:) )   ! Internal force term in force balance (y)
371
[8272]372      IF  ( iom_use( "normstr"  ) ) CALL iom_put( "normstr"     ,   diag_sig1(:,:)           * zswi(:,:) + zmiss(:,:) )   ! Normal stress
373      IF  ( iom_use( "sheastr"  ) ) CALL iom_put( "sheastr"     ,   diag_sig2(:,:)           * zswi(:,:) + zmiss(:,:) )   ! Shear stress
[8266]374
[8239]375      !--------------------------------
376      ! Global ice diagnostics (SIMIP)
377      !--------------------------------
378
379      IF ( iom_use( "NH_icearea" ) .OR. iom_use( "NH_icevolu" ) .OR. iom_use( "NH_iceextt" ) )   THEN   ! NH integrated diagnostics
380 
[8240]381         WHERE( ff_t > 0._wp ); zswi(:,:) = 1.0e-12
[8239]382         ELSEWHERE            ; zswi(:,:) = 0.
383         END WHERE
384
[8240]385         zdiag_area_nh = glob_sum( at_i(:,:) * zswi(:,:) * e1e2t(:,:) )
386         zdiag_volu_nh = glob_sum( vt_i(:,:) * zswi(:,:) * e1e2t(:,:) )
[8239]387
[8240]388         WHERE( ff_t > 0._wp .AND. at_i > 0.15 ); zswi(:,:) = 1.0e-12
[8239]389         ELSEWHERE                              ; zswi(:,:) = 0.
390         END WHERE
391
[8240]392         zdiag_extt_nh = glob_sum( zswi(:,:) * e1e2t(:,:) )
[8239]393
394         IF ( iom_use( "NH_icearea" ) ) CALL iom_put( "NH_icearea" ,  zdiag_area_nh  )
395         IF ( iom_use( "NH_icevolu" ) ) CALL iom_put( "NH_icevolu" ,  zdiag_volu_nh  )
396         IF ( iom_use( "NH_iceextt" ) ) CALL iom_put( "NH_iceextt" ,  zdiag_extt_nh  )
397
398      ENDIF
399
400      IF ( iom_use( "SH_icearea" ) .OR. iom_use( "SH_icevolu" ) .OR. iom_use( "SH_iceextt" ) )   THEN   ! SH integrated diagnostics
401
[8240]402         WHERE( ff_t < 0._wp ); zswi(:,:) = 1.0e-12; 
[8239]403         ELSEWHERE            ; zswi(:,:) = 0.
404         END WHERE
405
[8240]406         zdiag_area_sh = glob_sum( at_i(:,:) * zswi(:,:) * e1e2t(:,:) ) 
407         zdiag_volu_sh = glob_sum( vt_i(:,:) * zswi(:,:) * e1e2t(:,:) )
[8239]408
[8240]409         WHERE( ff_t < 0._wp .AND. at_i > 0.15 ); zswi(:,:) = 1.0e-12
[8239]410         ELSEWHERE                              ; zswi(:,:) = 0.
411         END WHERE
412
[8240]413         zdiag_extt_sh = glob_sum( zswi(:,:) * e1e2t(:,:) )
[8239]414
415         IF ( iom_use( "SH_icearea" ) ) CALL iom_put( "SH_icearea", zdiag_area_sh )
416         IF ( iom_use( "SH_icevolu" ) ) CALL iom_put( "SH_icevolu", zdiag_volu_sh )
417         IF ( iom_use( "SH_iceextt" ) ) CALL iom_put( "SH_iceextt", zdiag_extt_sh )
418
419      ENDIF 
420
[4688]421      !     !  Create an output files (output.lim.abort.nc) if S < 0 or u > 20 m/s
422      !     IF( kindic < 0 )   CALL lim_wri_state( 'output.abort' )
423      !     not yet implemented
424     
[4161]425      IF( nn_timing == 1 )  CALL timing_stop('limwri')
[2777]426     
[825]427   END SUBROUTINE lim_wri
428
[4161]429 
430   SUBROUTINE lim_wri_state( kt, kid, kh_i )
431      !!---------------------------------------------------------------------
432      !!                 ***  ROUTINE lim_wri_state  ***
433      !!       
434      !! ** Purpose :   create a NetCDF file named cdfile_name which contains
435      !!      the instantaneous ice state and forcing fields for ice model
436      !!        Used to find errors in the initial state or save the last
437      !!      ocean state in case of abnormal end of a simulation
438      !!
439      !! History :
[7646]440      !!   4.0  !  2013-06  (C. Rousset)
[4161]441      !!----------------------------------------------------------------------
[7646]442      INTEGER, INTENT( in )   ::   kt               ! ocean time-step index)
443      INTEGER, INTENT( in )   ::   kid , kh_i
444      INTEGER                 ::   nz_i, jl
445      REAL(wp), DIMENSION(jpl) :: jcat
[4161]446      !!----------------------------------------------------------------------
[7646]447      DO jl = 1, jpl
448         jcat(jl) = REAL(jl)
449      ENDDO
450     
451      CALL histvert( kid, "ncatice", "Ice Categories","", jpl, jcat, nz_i, "up")
[825]452
[7646]453      CALL histdef( kid, "sithic", "Ice thickness"           , "m"      ,   &
[4765]454      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
[7646]455      CALL histdef( kid, "siconc", "Ice concentration"       , "%"      ,   &
[4765]456      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
[7646]457      CALL histdef( kid, "sitemp", "Ice temperature"         , "C"      ,   &
[4765]458      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
[7646]459      CALL histdef( kid, "sivelu", "i-Ice speed "            , "m/s"    ,   &
[4765]460      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
[7646]461      CALL histdef( kid, "sivelv", "j-Ice speed "            , "m/s"    ,   &
[4765]462      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
[7646]463      CALL histdef( kid, "sistru", "i-Wind stress over ice " , "Pa"     ,   &
[4765]464      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
[7646]465      CALL histdef( kid, "sistrv", "j-Wind stress over ice " , "Pa"     ,   &
[4765]466      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
[7646]467      CALL histdef( kid, "sisflx", "Solar flux over ocean"     , "w/m2" ,   &
[4765]468      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
[7646]469      CALL histdef( kid, "sinflx", "Non-solar flux over ocean" , "w/m2" ,   &
[4765]470      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
471      CALL histdef( kid, "isnowpre", "Snow precipitation"      , "kg/m2/s",   &
472      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
[7646]473      CALL histdef( kid, "sisali", "Ice salinity"            , "PSU"    ,   &
[4765]474      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
[7646]475      CALL histdef( kid, "sivolu", "Ice volume"              , "m"      ,   &
[4765]476      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
[7646]477      CALL histdef( kid, "sidive", "Ice divergence"          , "10-8s-1",   &
[4765]478      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
[7646]479
[8233]480      ! MV MP 2016
481      IF ( ln_pnd ) THEN
482         CALL histdef( kid, "si_amp", "Melt pond fraction"      , "%"      ,   &
483      &         jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
484         CALL histdef( kid, "si_vmp", "Melt pond volume"        ,  "m"     ,   &
485      &         jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
486      ENDIF
487      ! END MV MP 2016
488
[7646]489      CALL histdef( kid, "vfxbog", "Ice bottom production"   , "m/s"    ,   &
[4765]490      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
[7646]491      CALL histdef( kid, "vfxdyn", "Ice dynamic production"  , "m/s"    ,   &
[4765]492      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
[7646]493      CALL histdef( kid, "vfxopw", "Ice open water prod"     , "m/s"    ,   &
[4765]494      &       jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
[7646]495      CALL histdef( kid, "vfxsni", "Snow ice production "    , "m/s"    ,   &
[4765]496      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
[8409]497      CALL histdef( kid, "vfxres", "Ice prod from corrections" , "m/s"  ,   &
[4765]498      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
[7646]499      CALL histdef( kid, "vfxbom", "Ice bottom melt"         , "m/s"    ,   &
[4765]500      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
[7646]501      CALL histdef( kid, "vfxsum", "Ice surface melt"        , "m/s"    ,   &
[4765]502      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
[4161]503
[7646]504      CALL histdef( kid, "sithicat", "Ice thickness"         , "m"      ,   &
505      &      jpi, jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt )
506      CALL histdef( kid, "siconcat", "Ice concentration"     , "%"      ,   &
507      &      jpi, jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt )
508      CALL histdef( kid, "sisalcat", "Ice salinity"           , ""      ,   &
509      &      jpi, jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt )
510      CALL histdef( kid, "sitemcat", "Ice temperature"       , "C"      ,   &
511      &      jpi, jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt )
512      CALL histdef( kid, "snthicat", "Snw thickness"         , "m"      ,   &
513      &      jpi, jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt )
514      CALL histdef( kid, "sntemcat", "Snw temperature"       , "C"      ,   &
515      &      jpi, jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt )
516
[4161]517      CALL histend( kid, snc4set )   ! end of the file definition
518
[7646]519      CALL histwrite( kid, "sithic", kt, htm_i         , jpi*jpj, (/1/) )   
520      CALL histwrite( kid, "siconc", kt, at_i          , jpi*jpj, (/1/) )
521      CALL histwrite( kid, "sitemp", kt, tm_i - rt0    , jpi*jpj, (/1/) )
522      CALL histwrite( kid, "sivelu", kt, u_ice          , jpi*jpj, (/1/) )
523      CALL histwrite( kid, "sivelv", kt, v_ice          , jpi*jpj, (/1/) )
524      CALL histwrite( kid, "sistru", kt, utau_ice       , jpi*jpj, (/1/) )
525      CALL histwrite( kid, "sistrv", kt, vtau_ice       , jpi*jpj, (/1/) )
526      CALL histwrite( kid, "sisflx", kt, qsr , jpi*jpj, (/1/) )
527      CALL histwrite( kid, "sinflx", kt, qns , jpi*jpj, (/1/) )
[4161]528      CALL histwrite( kid, "isnowpre", kt, sprecip        , jpi*jpj, (/1/) )
[7646]529      CALL histwrite( kid, "sisali", kt, smt_i          , jpi*jpj, (/1/) )
530      CALL histwrite( kid, "sivolu", kt, vt_i           , jpi*jpj, (/1/) )
531      CALL histwrite( kid, "sidive", kt, divu_i*1.0e8   , jpi*jpj, (/1/) )
[4161]532
[8233]533      ! MV MP 2016
534      IF ( ln_pnd ) THEN
535         CALL histwrite( kid, "si_amp", kt, at_ip         , jpi*jpj, (/1/) )
536         CALL histwrite( kid, "si_vmp", kt, vt_ip         , jpi*jpj, (/1/) )
537      ENDIF
538      ! END MV MP 2016
539
[7646]540      CALL histwrite( kid, "vfxbog", kt, wfx_bog        , jpi*jpj, (/1/) )
541      CALL histwrite( kid, "vfxdyn", kt, wfx_dyn        , jpi*jpj, (/1/) )
542      CALL histwrite( kid, "vfxopw", kt, wfx_opw        , jpi*jpj, (/1/) )
543      CALL histwrite( kid, "vfxsni", kt, wfx_sni        , jpi*jpj, (/1/) )
544      CALL histwrite( kid, "vfxres", kt, wfx_res        , jpi*jpj, (/1/) )
545      CALL histwrite( kid, "vfxbom", kt, wfx_bom        , jpi*jpj, (/1/) )
546      CALL histwrite( kid, "vfxsum", kt, wfx_sum        , jpi*jpj, (/1/) )
[8233]547      IF ( ln_pnd ) &
548         CALL histwrite( kid, "vfxpnd", kt, wfx_pnd     , jpi*jpj, (/1/) )
[4333]549
[7646]550      CALL histwrite( kid, "sithicat", kt, ht_i        , jpi*jpj*jpl, (/1/) )   
551      CALL histwrite( kid, "siconcat", kt, a_i         , jpi*jpj*jpl, (/1/) )   
552      CALL histwrite( kid, "sisalcat", kt, sm_i        , jpi*jpj*jpl, (/1/) )   
553      CALL histwrite( kid, "sitemcat", kt, tm_i - rt0  , jpi*jpj*jpl, (/1/) )   
554      CALL histwrite( kid, "snthicat", kt, ht_s        , jpi*jpj*jpl, (/1/) )   
555      CALL histwrite( kid, "sntemcat", kt, tm_su - rt0 , jpi*jpj*jpl, (/1/) )   
556
[4688]557      ! Close the file
558      ! -----------------
559      !CALL histclo( kid )
[4161]560
561    END SUBROUTINE lim_wri_state
562
[825]563#else
564   !!----------------------------------------------------------------------
565   !!   Default option :         Empty module          NO LIM sea-ice model
566   !!----------------------------------------------------------------------
567CONTAINS
568   SUBROUTINE lim_wri          ! Empty routine
569   END SUBROUTINE lim_wri
570#endif
571
572   !!======================================================================
573END MODULE limwri
Note: See TracBrowser for help on using the repository browser.