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/branches/UKMO/dev_r10037_GPU/src/ICE – NEMO

source: NEMO/branches/UKMO/dev_r10037_GPU/src/ICE/icestp.F90 @ 11467

Last change on this file since 11467 was 11467, checked in by andmirek, 5 years ago

Ticket #2197 allocate arrays at the beggining of the run

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