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

source: branches/2017/dev_merge_2017/NEMOGCM/NEMO/LIM_SRC_3/icestp.F90 @ 9482

Last change on this file since 9482 was 9482, checked in by clem, 6 years ago

The configuration Agrif_Nordic is now restartable for any nn_fsbc(Parent) and nn_fsbc(Child). However we do not authorized nn_fsbc(Child) to be larger than 1 because otherwise it breaks the CFL too easily. The simulation would still run but the results would not be satisfactory. I still have to verify this point with the last version of the code

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