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.
icestp.F90 in NEMO/trunk/src/ICE – NEMO

source: NEMO/trunk/src/ICE/icestp.F90 @ 9596

Last change on this file since 9596 was 9596, checked in by nicolasmartin, 6 years ago

Reorganisation plan for NEMO repository: preliminary implementation of the new trunk structure (ref #2015)

  • Deletion of useless 1st level, add new explicit names for folders
  • Extract dev tools (SETTE and Trusting) to /utils/CI
  • Extract figures folder from documentation to /utils/figures
  • Extrac TEST_CASES to /utils/test_cases
  • Move ./TOOLS/COMPILE to ./mk
  • Add few wiki files at the root: README, INSTALL and LICENSE with full text of CeCILL v2.0
  • Style: uppercase for wiki files, lowercase for folder names

Additionally, inclusion of routines renaming in NST: agrif_si3 -> agrif_ice

File size: 21.8 KB
RevLine 
[8586]1MODULE icestp
2   !!======================================================================
3   !!                       ***  MODULE  icestp  ***
4   !! Surface module :  update the ocean surface boundary condition over ice
[9570]5   !!                   covered area using SI3 sea-ice model
[8586]6   !!=====================================================================
7   !! History :  2.0  ! 2006-12  (M. Vancoppenolle) Original code
8   !!            3.0  ! 2008-02  (C. Talandier)  Surface module from icestp.F90
9   !!             -   ! 2008-04  (G. Madec)  sltyle and ice_ctl routine
10   !!            3.3  ! 2010-11  (G. Madec) ice-ocean stress always computed at each ocean time-step
11   !!            3.4  ! 2011-01  (A Porter)  dynamical allocation
12   !!             -   ! 2012-10  (C. Rousset)  add ice_dia
13   !!            3.6  ! 2014-07  (M. Vancoppenolle, G. Madec, O. Marti) revise coupled interface
14   !!            4.0  ! 2016-06  (L. Brodeau) new unified bulk routine (based on AeroBulk)
15   !!----------------------------------------------------------------------
[9570]16#if defined key_si3
[8586]17   !!----------------------------------------------------------------------
[9570]18   !!   'key_si3'                                       SI3 sea-ice model
[8586]19   !!----------------------------------------------------------------------
20   !!   ice_stp       : sea-ice model time-stepping and update ocean SBC over ice-covered area
21   !!   ice_init      : initialize sea-ice
22   !!----------------------------------------------------------------------
23   USE oce            ! ocean dynamics and tracers
24   USE dom_oce        ! ocean space and time domain
25   USE c1d            ! 1D vertical configuration
26   USE ice            ! sea-ice: variables
27   USE ice1D          ! sea-ice: thermodynamical 1D variables
28   !
29   USE phycst         ! Define parameters for the routines
30   USE eosbn2         ! equation of state
31   USE sbc_oce        ! Surface boundary condition: ocean fields
32   USE sbc_ice        ! Surface boundary condition: ice   fields
33   !
34   USE iceforcing     ! sea-ice: Surface boundary condition       !!gm why not icesbc module name
35   USE icedyn         ! sea-ice: dynamics
36   USE icethd         ! sea-ice: thermodynamics
37   USE icecor         ! sea-ice: corrections
38   USE iceupdate      ! sea-ice: sea surface boundary condition update
39   USE icedia         ! sea-ice: budget diagnostics
40   USE icewri         ! sea-ice: outputs
41   USE icerst         ! sea-ice: restarts
42   USE icevar         ! sea-ice: operations
43   USE icectl         ! sea-ice: control
44   USE iceistate      ! sea-ice: initial state
45   USE iceitd         ! sea-ice: remapping thickness distribution
46   USE icealb         ! sea-ice: albedo
47   !
48   USE bdy_oce , ONLY : ln_bdy   ! flag for bdy
49   USE bdyice         ! unstructured open boundary data for sea-ice
50# if defined key_agrif
51   USE agrif_ice
[9596]52   USE agrif_ice_interp
[8586]53# endif
54   !
55   USE in_out_manager ! I/O manager
56   USE iom            ! I/O manager library
57   USE lib_mpp        ! MPP library
58   USE lib_fortran    ! fortran utilities (glob_sum + no signed zero)
59   USE timing         ! Timing
60   USE prtctl         ! Print control
61
62   IMPLICIT NONE
63   PRIVATE
64
65   PUBLIC   ice_stp    ! called by sbcmod.F90
66   PUBLIC   ice_init   ! called by sbcmod.F90
67
68   !! * Substitutions
69#  include "vectopt_loop_substitute.h90"
70   !!----------------------------------------------------------------------
71   !! NEMO/ICE 4.0 , NEMO Consortium (2017)
72   !! $Id: icestp.F90 8319 2017-07-11 15:00:44Z clem $
73   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
74   !!----------------------------------------------------------------------
75CONTAINS
76
77   SUBROUTINE ice_stp( kt, ksbc )
78      !!---------------------------------------------------------------------
79      !!                  ***  ROUTINE ice_stp  ***
80      !!
81      !! ** Purpose :   sea-ice model time-stepping and update ocean surface
82      !!              boundary condition over ice-covered area
83      !!
84      !! ** Method  :   ice model time stepping
85      !!              - call the ice dynamics routine
86      !!              - call the ice advection/diffusion routine
87      !!              - call the ice thermodynamics routine
88      !!              - call the routine that computes mass and
89      !!                heat fluxes at the ice/ocean interface
90      !!              - save the outputs
91      !!              - save the outputs for restart when necessary
92      !!
93      !! ** Action  : - time evolution of the LIM sea-ice model
94      !!              - update all sbc variables below sea-ice:
95      !!                utau, vtau, taum, wndm, qns , qsr, emp , sfx
96      !!---------------------------------------------------------------------
97      INTEGER, INTENT(in) ::   kt      ! ocean time step
98      INTEGER, INTENT(in) ::   ksbc    ! flux formulation (user defined, bulk, or Pure Coupled)
99      !
100      INTEGER ::   jl   ! dummy loop index
101      !!----------------------------------------------------------------------
102      !
[9124]103      IF( ln_timing )   CALL timing_start('ice_stp')
[8586]104      !
105      !                                      !-----------------------!
106      IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN   ! --- Ice time step --- !
107         !                                   !-----------------------!
108         !
109         kt_ice = kt                              ! -- Ice model time step
110         !
111         u_oce(:,:) = ssu_m(:,:)                  ! -- mean surface ocean current
112         v_oce(:,:) = ssv_m(:,:)
113         !
114         CALL eos_fzp( sss_m(:,:) , t_bo(:,:) )   ! -- freezing temperature [Kelvin] (set to rt0 over land)
115         t_bo(:,:) = ( t_bo(:,:) + rt0 ) * tmask(:,:,1) + rt0 * ( 1._wp - tmask(:,:,1) )
116         !
[9482]117         !                          !==  AGRIF Parent to Child  ==!
118#if defined key_agrif
119         !                              ! lim_nbstep ranges from 1 to the nb of child ocean steps inside one parent ice step
120         IF( .NOT. Agrif_Root() )       lim_nbstep = MOD( lim_nbstep, Agrif_irhot() * Agrif_Parent(nn_fsbc) / nn_fsbc ) + 1
121         !                              ! these calls must remain here for restartability purposes
[9570]122                                        CALL agrif_interp_si3( 'T' ) 
123                                        CALL agrif_interp_si3( 'U' )
124                                        CALL agrif_interp_si3( 'V' )
[9482]125#endif
126                                        CALL store_fields             ! Store now ice values
[8586]127         !
128         !------------------------------------------------!
129         ! --- Dynamical coupling with the atmosphere --- !
130         !------------------------------------------------!
131         ! It provides the following fields used in sea ice model:
132         !    utau_ice, vtau_ice = surface ice stress [N/m2]
133         !------------------------------------------------!
134                                        CALL ice_forcing_tau( kt, ksbc, utau_ice, vtau_ice )         
135         !-------------------------------------!
136         ! --- ice dynamics and advection  --- !
137         !-------------------------------------!
[9482]138                                        CALL diag_set0                ! set diag of mass, heat and salt fluxes to 0
139                                        CALL ice_rst_opn( kt )        ! Open Ice restart file (if necessary)
[8586]140         !
141         IF( ln_icedyn .AND. .NOT.lk_c1d )   &
142            &                           CALL ice_dyn( kt )            ! -- Ice dynamics
143         !
144         !                          !==  lateral boundary conditions  ==!
145         IF( ln_icethd .AND. ln_bdy )   CALL bdy_ice( kt )            ! -- bdy ice thermo
146         !
[9482]147         !                          !==  previous lead fraction and ice volume for flux calculations
148                                        CALL ice_var_glo2eqv          ! h_i and h_s for ice albedo calculation
149                                        CALL ice_var_agg(1)           ! at_i for coupling
150                                        CALL store_fields             ! Store now ice values
[8586]151         !
152         !------------------------------------------------------!
153         ! --- Thermodynamical coupling with the atmosphere --- !
154         !------------------------------------------------------!
155         ! It provides the following fields used in sea ice model:
156         !    emp_oce , emp_ice    = E-P over ocean and sea ice                    [Kg/m2/s]
157         !    sprecip              = solid precipitation                           [Kg/m2/s]
158         !    evap_ice             = sublimation                                   [Kg/m2/s]
159         !    qsr_tot , qns_tot    = solar & non solar heat flux (total)           [W/m2]
160         !    qsr_ice , qns_ice    = solar & non solar heat flux over ice          [W/m2]
161         !    dqns_ice             = non solar  heat sensistivity                  [W/m2]
162         !    qemp_oce, qemp_ice,  = sensible heat (associated with evap & precip) [W/m2]
163         !    qprec_ice, qevap_ice
164         !------------------------------------------------------!
165                                        CALL ice_forcing_flx( kt, ksbc )
166         !----------------------------!
167         ! --- ice thermodynamics --- !
168         !----------------------------!
169         IF( ln_icethd )                CALL ice_thd( kt )            ! -- Ice thermodynamics     
170         !
171         !
172         IF( ln_icethd )                CALL ice_cor( kt , 2 )        ! -- Corrections
[9482]173         !
174                                        CALL ice_var_glo2eqv          ! necessary calls (at least for coupling)
175                                        CALL ice_var_agg( 2 )         ! necessary calls (at least for coupling)
176         !
[8586]177!! clem: one should switch the calculation of the fluxes onto the parent grid but the following calls do not work
[9596]178!!       moreover it should only be called at the update frequency (as in agrif_ice_update.F90)
[9482]179!# if defined key_agrif
180!         IF( .NOT. Agrif_Root() )     CALL Agrif_ChildGrid_To_ParentGrid()
181!# endif
[8586]182                                        CALL ice_update_flx( kt )     ! -- Update ocean surface mass, heat and salt fluxes
[9482]183!# if defined key_agrif
184!         IF( .NOT. Agrif_Root() )     CALL Agrif_ParentGrid_To_ChildGrid()
185!# endif
[8586]186         IF( ln_icediahsb )             CALL ice_dia( kt )            ! -- Diagnostics outputs
187         !
188                                        CALL ice_wri( kt )            ! -- Ice outputs
189         !
190         IF( lrst_ice )                 CALL ice_rst_write( kt )      ! -- Ice restart file
191         !
192         IF( ln_icectl )                CALL ice_ctl( kt )            ! -- alerts in case of model crash
193         !
194      ENDIF   ! End sea-ice time step only
195
196      !-------------------------!
197      ! --- Ocean time step --- !
198      !-------------------------!
199      IF( ln_icedyn )                   CALL ice_update_tau( kt, ub(:,:,1), vb(:,:,1) )   ! -- update surface ocean stresses
200!!gm   remark, the ocean-ice stress is not saved in ice diag call above .....  find a solution!!!
201      !
[9124]202      IF( ln_timing )   CALL timing_stop('ice_stp')
[8586]203      !
204   END SUBROUTINE ice_stp
205
206
207   SUBROUTINE ice_init
208      !!----------------------------------------------------------------------
209      !!                  ***  ROUTINE ice_init  ***
210      !!
211      !! ** purpose :   Initialize sea-ice parameters
212      !!----------------------------------------------------------------------
213      INTEGER :: ji, jj, ierr
214      !!----------------------------------------------------------------------
215      IF(lwp) WRITE(numout,*)
216      IF(lwp) WRITE(numout,*) 'ice_init: Arrays allocation & Initialization off all routines & init state' 
217      IF(lwp) WRITE(numout,*) '~~~~~~~~'
218      !
219      !                                ! Open the reference and configuration namelist files and namelist output file
220      CALL ctl_opn( numnam_ice_ref, 'namelist_ice_ref',    'OLD',     'FORMATTED', 'SEQUENTIAL', -1, numout, lwp )
221      CALL ctl_opn( numnam_ice_cfg, 'namelist_ice_cfg',    'OLD',     'FORMATTED', 'SEQUENTIAL', -1, numout, lwp )
222      IF(lwm) CALL ctl_opn( numoni, 'output.namelist.ice', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, 1 )
223      !
224      CALL par_init                ! set some ice run parameters
225      !
226      !                                ! Allocate the ice arrays (sbc_ice already allocated in sbc_init)
227      ierr =        ice_alloc        ()      ! ice variables
228      ierr = ierr + sbc_ice_alloc    ()      ! surface forcing
229      ierr = ierr + ice1D_alloc      ()      ! thermodynamics
230      !
231      IF( lk_mpp    )   CALL mpp_sum( ierr )
232      IF( ierr /= 0 )   CALL ctl_stop('STOP', 'ice_init : unable to allocate ice arrays')
233      !
234      CALL ice_itd_init                ! ice thickness distribution initialization
235      !
[9118]236      CALL ice_thd_init                ! set ice thermodynics parameters (clem: important to call it first for melt ponds)
237      !
[8586]238      !                                ! Initial sea-ice state
239      IF( .NOT. ln_rstart ) THEN              ! start from rest: sea-ice deduced from sst
240         CALL ice_istate_init
241         CALL ice_istate
242      ELSE                                    ! start from a restart file
243         CALL ice_rst_read
244      ENDIF
245      CALL ice_var_glo2eqv
246      CALL ice_var_agg(2)
247      !
248      CALL ice_forcing_init            ! set ice-ocean and ice-atm. coupling parameters
249      !
[9118]250      CALL ice_dyn_init                ! set ice dynamics parameters
[8586]251      !
252      CALL ice_update_init             ! ice surface boundary condition
253      !
254      CALL ice_alb_init                ! ice surface albedo
255      !
256      CALL ice_dia_init                ! initialization for diags
257      !
258      fr_i  (:,:)   = at_i(:,:)        ! initialisation of sea-ice fraction
259      tn_ice(:,:,:) = t_su(:,:,:)      ! initialisation of surface temp for coupled simu
260      !
261      !                                ! set max concentration in both hemispheres
262      WHERE( gphit(:,:) > 0._wp )   ;   rn_amax_2d(:,:) = rn_amax_n  ! NH
263      ELSEWHERE                     ;   rn_amax_2d(:,:) = rn_amax_s  ! SH
264      END WHERE
265
266      IF( ln_rstart )   CALL iom_close( numrir )  ! close input ice restart file
267      !
268   END SUBROUTINE ice_init
269
270
271   SUBROUTINE par_init
272      !!-------------------------------------------------------------------
273      !!                  ***  ROUTINE par_init ***
274      !!
275      !! ** Purpose :   Definition generic parameters for ice model
276      !!
277      !! ** Method  :   Read namelist and check the parameter
278      !!                values called at the first timestep (nit000)
279      !!
280      !! ** input   :   Namelist nampar
281      !!-------------------------------------------------------------------
[9169]282      INTEGER  ::   ios                 ! Local integer
283      !!
[9076]284      NAMELIST/nampar/ jpl, nlay_i, nlay_s, nn_virtual_itd, ln_icedyn, ln_icethd, rn_amax_n, rn_amax_s,  &
[8586]285         &             cn_icerst_in, cn_icerst_indir, cn_icerst_out, cn_icerst_outdir
286      !!-------------------------------------------------------------------
287      !
288      REWIND( numnam_ice_ref )      ! Namelist nampar in reference namelist : Parameters for ice
289      READ  ( numnam_ice_ref, nampar, IOSTAT = ios, ERR = 901)
[9169]290901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'nampar in reference namelist', lwp )
[8586]291      REWIND( numnam_ice_cfg )      ! Namelist nampar in configuration namelist : Parameters for ice
292      READ  ( numnam_ice_cfg, nampar, IOSTAT = ios, ERR = 902 )
[9169]293902   IF( ios > 0 )   CALL ctl_nam ( ios , 'nampar in configuration namelist', lwp )
294      IF(lwm) WRITE( numoni, nampar )
[8586]295      !
296      IF(lwp) THEN                  ! control print
297         WRITE(numout,*)
[9169]298         WRITE(numout,*) '   par_init: ice parameters shared among all the routines'
299         WRITE(numout,*) '   ~~~~~~~~'
300         WRITE(numout,*) '      Namelist nampar: '
301         WRITE(numout,*) '         number of ice  categories                           jpl       = ', jpl
302         WRITE(numout,*) '         number of ice  layers                               nlay_i    = ', nlay_i
303         WRITE(numout,*) '         number of snow layers                               nlay_s    = ', nlay_s
304         WRITE(numout,*) '         virtual ITD param for jpl=1 (1-3) or not (0)   nn_virtual_itd = ', nn_virtual_itd
305         WRITE(numout,*) '         Ice dynamics       (T) or not (F)                   ln_icedyn = ', ln_icedyn
306         WRITE(numout,*) '         Ice thermodynamics (T) or not (F)                   ln_icethd = ', ln_icethd
307         WRITE(numout,*) '         maximum ice concentration for NH                              = ', rn_amax_n 
308         WRITE(numout,*) '         maximum ice concentration for SH                              = ', rn_amax_s
[8586]309      ENDIF
310      !                                        !--- check consistency
[9076]311      IF ( jpl > 1 .AND. nn_virtual_itd == 1 ) THEN
312         nn_virtual_itd = 0
[8586]313         IF(lwp) WRITE(numout,*)
[9076]314         IF(lwp) WRITE(numout,*) '   nn_virtual_itd forced to 0 as jpl>1, no need with multiple categories to emulate them'
[8586]315      ENDIF
[8933]316      !
317     IF( ln_cpl .AND. nn_cats_cpl /= 1 .AND. nn_cats_cpl /= jpl ) THEN
318        CALL ctl_stop( 'STOP', 'par_init: in coupled mode, nn_cats_cpl should be either 1 or jpl' )
319     ENDIF
[8586]320      !
321      IF( ln_bdy .AND. ln_icediachk )   CALL ctl_warn('par_init: online conservation check does not work with BDY')
322      !
[9169]323      rdt_ice   = REAL(nn_fsbc) * rdt          !--- sea-ice timestep and its inverse
[8586]324      r1_rdtice = 1._wp / rdt_ice
[9169]325      IF(lwp) WRITE(numout,*)
326      IF(lwp) WRITE(numout,*) '      ice timestep rdt_ice = nn_fsbc*rdt = ', rdt_ice
[8586]327      !
328      r1_nlay_i = 1._wp / REAL( nlay_i, wp )   !--- inverse of nlay_i and nlay_s
329      r1_nlay_s = 1._wp / REAL( nlay_s, wp )
330      !
331   END SUBROUTINE par_init
332
333
334   SUBROUTINE store_fields
335      !!----------------------------------------------------------------------
336      !!                  ***  ROUTINE store_fields  ***
337      !!
338      !! ** purpose :  store ice variables at "before" time step
339      !!----------------------------------------------------------------------
340      INTEGER  ::   ji, jj, jl      ! dummy loop index
341      !!----------------------------------------------------------------------
342      !
343      a_i_b (:,:,:)   = a_i (:,:,:)     ! ice area
344      v_i_b (:,:,:)   = v_i (:,:,:)     ! ice volume
345      v_s_b (:,:,:)   = v_s (:,:,:)     ! snow volume
346      sv_i_b(:,:,:)   = sv_i(:,:,:)     ! salt content
347      oa_i_b(:,:,:)   = oa_i(:,:,:)     ! areal age content
348      e_s_b (:,:,:,:) = e_s (:,:,:,:)   ! snow thermal energy
349      e_i_b (:,:,:,:) = e_i (:,:,:,:)   ! ice thermal energy
350      WHERE( a_i_b(:,:,:) >= epsi20 )
351         h_i_b(:,:,:) = v_i_b (:,:,:) / a_i_b(:,:,:)   ! ice thickness
352         h_s_b(:,:,:) = v_s_b (:,:,:) / a_i_b(:,:,:)   ! snw thickness
353      ELSEWHERE
354         h_i_b(:,:,:) = 0._wp
355         h_s_b(:,:,:) = 0._wp
356      END WHERE
[9169]357      !
[8586]358      ! ice velocities & total concentration
359      at_i_b(:,:)  = SUM( a_i_b(:,:,:), dim=3 )
360      u_ice_b(:,:) = u_ice(:,:)
361      v_ice_b(:,:) = v_ice(:,:)
362      !
363   END SUBROUTINE store_fields
364
365
366   SUBROUTINE diag_set0
367      !!----------------------------------------------------------------------
368      !!                  ***  ROUTINE diag_set0  ***
369      !!
370      !! ** purpose :  set ice-ocean and ice-atm. fluxes to zeros at the beggining
371      !!               of the time step
372      !!----------------------------------------------------------------------
373      INTEGER  ::   ji, jj      ! dummy loop index
374      !!----------------------------------------------------------------------
375      sfx    (:,:) = 0._wp   ;
376      sfx_bri(:,:) = 0._wp   ;   sfx_lam(:,:) = 0._wp
377      sfx_sni(:,:) = 0._wp   ;   sfx_opw(:,:) = 0._wp
378      sfx_bog(:,:) = 0._wp   ;   sfx_dyn(:,:) = 0._wp
379      sfx_bom(:,:) = 0._wp   ;   sfx_sum(:,:) = 0._wp
380      sfx_res(:,:) = 0._wp   ;   sfx_sub(:,:) = 0._wp
381      !
382      wfx_snw(:,:) = 0._wp   ;   wfx_ice(:,:) = 0._wp
383      wfx_sni(:,:) = 0._wp   ;   wfx_opw(:,:) = 0._wp
384      wfx_bog(:,:) = 0._wp   ;   wfx_dyn(:,:) = 0._wp
385      wfx_bom(:,:) = 0._wp   ;   wfx_sum(:,:) = 0._wp
386      wfx_res(:,:) = 0._wp   ;   wfx_sub(:,:) = 0._wp
387      wfx_spr(:,:) = 0._wp   ;   wfx_lam(:,:) = 0._wp 
388      wfx_snw_dyn(:,:) = 0._wp ; wfx_snw_sum(:,:) = 0._wp
389      wfx_snw_sub(:,:) = 0._wp ; wfx_ice_sub(:,:) = 0._wp
390      wfx_snw_sni(:,:) = 0._wp 
391      wfx_pnd(:,:) = 0._wp
392
393      hfx_thd(:,:) = 0._wp   ;
394      hfx_snw(:,:) = 0._wp   ;   hfx_opw(:,:) = 0._wp
395      hfx_bog(:,:) = 0._wp   ;   hfx_dyn(:,:) = 0._wp
396      hfx_bom(:,:) = 0._wp   ;   hfx_sum(:,:) = 0._wp
397      hfx_res(:,:) = 0._wp   ;   hfx_sub(:,:) = 0._wp
398      hfx_spr(:,:) = 0._wp   ;   hfx_dif(:,:) = 0._wp
399      hfx_err_rem(:,:) = 0._wp
400      hfx_err_dif(:,:) = 0._wp
401      wfx_err_sub(:,:) = 0._wp
402      !
403      afx_tot(:,:) = 0._wp   ;
404      !
405      diag_heat(:,:) = 0._wp ;   diag_sice(:,:) = 0._wp
406      diag_vice(:,:) = 0._wp ;   diag_vsnw(:,:) = 0._wp
407
408      ! SIMIP diagnostics
[8933]409      diag_fc_bo(:,:) = 0._wp ; diag_fc_su(:,:) = 0._wp
[9448]410      t_si(:,:,:) = rt0       ! temp at the ice-snow interface
[8586]411
[8933]412      tau_icebfr(:,:)   = 0._wp   ! landfast ice param only (clem: important to keep the init here)
413      cnd_ice   (:,:,:) = 0._wp   ! initialisation of the effective conductivity at the top of ice/snow (Jules coupling)
[9169]414      !
[9409]415      ! for control checks (ln_icediachk)
416      diag_trp_vi(:,:) = 0._wp   ;   diag_trp_vs(:,:) = 0._wp
417      diag_trp_ei(:,:) = 0._wp   ;   diag_trp_es(:,:) = 0._wp
418      diag_trp_sv(:,:) = 0._wp
419
[8586]420   END SUBROUTINE diag_set0
421
422#else
423   !!----------------------------------------------------------------------
[9570]424   !!   Default option           Dummy module         NO SI3 sea-ice model
[8586]425   !!----------------------------------------------------------------------
426CONTAINS
427   SUBROUTINE ice_stp ( kt, ksbc )     ! Dummy routine
428      INTEGER, INTENT(in) ::   kt, ksbc
429      WRITE(*,*) 'ice_stp: You should not have seen this print! error?', kt
430   END SUBROUTINE ice_stp
431   SUBROUTINE ice_init                 ! Dummy routine
432   END SUBROUTINE ice_init
433#endif
434
435   !!======================================================================
436END MODULE icestp
Note: See TracBrowser for help on using the repository browser.