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/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3 – NEMO

source: branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90 @ 8061

Last change on this file since 8061 was 8061, checked in by vancop, 7 years ago

Quick commit on empirical melt ponds

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