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.
Changeset 9604 – NEMO

Changeset 9604


Ignore:
Timestamp:
2018-05-18T09:53:22+02:00 (6 years ago)
Author:
clem
Message:

change history of the ice routines

Location:
NEMO/trunk/src/ICE
Files:
31 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/ICE/ice.F90

    r9598 r9604  
    44   !!   sea-ice:  ice variables defined in memory 
    55   !!====================================================================== 
    6    !! History :  3.0  ! 2008-03  (M. Vancoppenolle) original code LIM-3 
    7    !!            4.0  ! 2011-02  (G. Madec) dynamical allocation 
     6   !! History :  3.0  !  2008-03  (M. Vancoppenolle) Original code 
     7   !!            4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
    88   !!---------------------------------------------------------------------- 
    99#if defined key_si3 
     
    1919   PUBLIC   ice_alloc   ! called by icestp.F90 
    2020 
    21    !!====================================================================== 
    22    !! LIM3 by the use of sweat, agile fingers and sometimes brain juice,  
    23    !!  was developed in Louvain-la-Neuve by :  
    24    !!    * Martin Vancoppenolle (UCL-ASTR, Belgium) 
    25    !!    * Sylvain Bouillon (UCL-ASTR, Belgium) 
    26    !!    * Miguel Angel Morales Maqueda (NOC-L, UK) 
    27    !!  
    28    !! Based on extremely valuable earlier work by 
    29    !!    * Thierry Fichefet 
    30    !!    * Hugues Goosse 
    31    !! 
    32    !! The following persons also contributed to the code in various ways 
    33    !!    * Gurvan Madec, Claude Talandier, Christian Ethe (LOCEAN, France) 
    34    !!    * Xavier Fettweis (UCL-ASTR), Ralph Timmermann (AWI, Germany) 
    35    !!    * Bill Lipscomb (LANL), Cecilia Bitz (UWa)  
    36    !!      and Elisabeth Hunke (LANL), USA. 
    37    !!  
    38    !! For more info, the interested user is kindly invited to consult the following references 
    39    !!    For model description and validation : 
    40    !!    * Vancoppenolle et al., Ocean Modelling, 2008a. 
    41    !!    * Vancoppenolle et al., Ocean Modelling, 2008b. 
    42    !!    For a specific description of EVP : 
    43    !!    * Bouillon et al., Ocean Modelling 2009. 
    44    !! 
    45    !!    Or the reference manual, that should be available by 2011 
    4621   !!====================================================================== 
    4722   !!                                                                     | 
     
    6237   !!   These are the variables that are either physically more           | 
    6338   !!   meaningful and/or used in ice thermodynamics                      | 
    64    !!                                                                     | 
    65    !! Routines in icevar.F90 perform conversions                          | 
    66    !!  - ice_var_glo2eqv  : from global to equivalent variables           | 
    67    !!  - ice_var_eqv2glo  : from equivalent to global variables           | 
    68    !!                                                                     | 
    69    !! For various purposes, the sea ice state variables have sometimes    | 
    70    !! to be aggregated over all ice thickness categories. This operation  | 
    71    !! is done in :                                                        | 
    72    !!  - ice_var_agg                                                      | 
    73    !!                                                                     | 
    74    !! in icestp.F90, the routines that compute the changes in the ice     | 
    75    !! state variables are called                                          | 
    76    !! - ice_rhg : ice dynamics                                            | 
    77    !! - ice_adv : ice advection                                           | 
    78    !! - ice_rdgrft : ice ridging and rafting                              | 
    79    !! - ice_thd : ice halo-thermodynamics and creation of new ice         | 
    80    !! - ice_itd : thermodynamic changes in ice thickness distribution     | 
    81    !!                                                                     | 
    82    !! See the associated routines for more information                    | 
    8339   !!                                                                     | 
    8440   !! List of ice state variables :                                       | 
     
    249205   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   stress1_i, stress2_i, stress12_i   !: 1st, 2nd & diagonal stress tensor element 
    250206   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   delta_i     !: ice rheology elta factor (Flato & Hibler 95) [s-1] 
    251    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   divu_i      !: Divergence of the velocity field [s-1] 
    252    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   shear_i     !: Shear of the velocity field [s-1] 
     207   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   divu_i      !: Divergence of the velocity field             [s-1] 
     208   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   shear_i     !: Shear of the velocity field                  [s-1] 
    253209   ! 
    254210   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   t_bo        !: Sea-Ice bottom temperature [Kelvin]      
     
    257213   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fhld        !: heat flux from the lead used for bottom melting 
    258214 
    259    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_snw     !: snow-ocean mass exchange   [kg.m-2.s-1] 
     215   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_snw     !: snow-ocean mass exchange             [kg.m-2.s-1] 
    260216   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_snw_sni !: snow ice growth component of wfx_snw [kg.m-2.s-1] 
    261    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_snw_sum !: surface melt component of wfx_snw [kg.m-2.s-1] 
    262    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_pnd     !: melt pond-ocean mass exchange   [kg.m-2.s-1] 
    263    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_spr     !: snow precipitation on ice  [kg.m-2.s-1] 
    264    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_sub     !: sublimation of snow/ice    [kg.m-2.s-1] 
    265    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_snw_sub !: snow sublimation           [kg.m-2.s-1] 
    266    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_ice_sub !: ice sublimation            [kg.m-2.s-1] 
    267  
    268    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_snw_dyn !: dynamical component of wfx_snw    [kg.m-2.s-1] 
     217   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_snw_sum !: surface melt component of wfx_snw    [kg.m-2.s-1] 
     218   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_pnd     !: melt pond-ocean mass exchange        [kg.m-2.s-1] 
     219   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_spr     !: snow precipitation on ice            [kg.m-2.s-1] 
     220   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_sub     !: sublimation of snow/ice              [kg.m-2.s-1] 
     221   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_snw_sub !: snow sublimation                     [kg.m-2.s-1] 
     222   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_ice_sub !: ice sublimation                      [kg.m-2.s-1] 
     223 
     224   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_snw_dyn !: dynamical component of wfx_snw       [kg.m-2.s-1] 
    269225 
    270226   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_ice     !: ice-ocean mass exchange                   [kg.m-2.s-1] 
     
    278234   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_res     !: residual component of wfx_ice             [kg.m-2.s-1] 
    279235 
    280    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   afx_tot     !: ice concentration tendency (total)          [s-1] 
     236   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   afx_tot     !: ice concentration tendency (total)        [s-1] 
    281237 
    282238   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   sfx_bog     !: salt flux due to ice growth/melt                      [PSU/m2/s] 
     
    292248   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   sfx_sub     !: salt flux due to ice sublimation 
    293249 
    294    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_bog     !: total heat flux causing bottom ice growth        [W.m-2] 
    295    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_bom     !: total heat flux causing bottom ice melt          [W.m-2] 
    296    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_sum     !: total heat flux causing surface ice melt         [W.m-2] 
    297    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_opw     !: total heat flux causing open water ice formation [W.m-2] 
    298    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_dif     !: total heat flux causing Temp change in the ice   [W.m-2] 
    299    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_snw     !: heat flux for snow melt                          [W.m-2] 
     250   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_bog     !: total heat flux causing bottom ice growth           [W.m-2] 
     251   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_bom     !: total heat flux causing bottom ice melt             [W.m-2] 
     252   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_sum     !: total heat flux causing surface ice melt            [W.m-2] 
     253   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_opw     !: total heat flux causing open water ice formation    [W.m-2] 
     254   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_dif     !: total heat flux causing Temp change in the ice      [W.m-2] 
     255   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_snw     !: heat flux for snow melt                             [W.m-2] 
    300256   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_err_dif !: heat flux remaining due to change in non-solar flux [W.m-2] 
    301    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_err_rem !: heat flux error after heat remapping             [W.m-2] 
    302    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_in      !: heat flux available for thermo transformations   [W.m-2] 
     257   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_err_rem !: heat flux error after heat remapping                [W.m-2] 
     258   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_in      !: heat flux available for thermo transformations      [W.m-2] 
    303259   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_out     !: heat flux remaining at the end of thermo transformations  [W.m-2] 
    304    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_err_sub !: mass flux error after sublimation [kg.m-2.s-1] 
     260   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_err_sub !: mass flux error after sublimation                   [kg.m-2.s-1] 
    305261    
    306262   ! heat flux associated with ice-atmosphere mass exchange 
    307    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_sub     !: heat flux for sublimation  [W.m-2] 
     263   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_sub     !: heat flux for sublimation            [W.m-2] 
    308264   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hfx_spr     !: heat flux of the snow precipitation  [W.m-2] 
    309265 
     
    421377      INTEGER :: ice_alloc 
    422378      ! 
    423       INTEGER :: ierr(18), ii 
     379      INTEGER :: ierr(15), ii 
    424380      !!----------------------------------------------------------------- 
    425  
    426381      ierr(:) = 0 
    427382 
    428       ! What could be one huge allocate statement is broken-up to try to 
    429       ! stay within Fortran's max-line length limit. 
    430383      ii = 1 
    431       ALLOCATE( u_oce   (jpi,jpj) , v_oce    (jpi,jpj) , ht_i_new (jpi,jpj) ,                        & 
    432          &      strength(jpi,jpj) , stress1_i(jpi,jpj) , stress2_i(jpi,jpj) , stress12_i(jpi,jpj) ,  & 
    433          &      delta_i (jpi,jpj) , divu_i   (jpi,jpj) , shear_i  (jpi,jpj) , STAT=ierr(ii) ) 
     384      ALLOCATE( u_oce    (jpi,jpj) , v_oce    (jpi,jpj) , ht_i_new  (jpi,jpj) , strength(jpi,jpj) ,  & 
     385         &      stress1_i(jpi,jpj) , stress2_i(jpi,jpj) , stress12_i(jpi,jpj) ,                      & 
     386         &      delta_i  (jpi,jpj) , divu_i   (jpi,jpj) , shear_i   (jpi,jpj) , STAT=ierr(ii) ) 
    434387 
    435388      ii = ii + 1 
     
    437390         &      wfx_snw(jpi,jpj) , wfx_snw_dyn(jpi,jpj) , wfx_snw_sum(jpi,jpj) , wfx_snw_sub(jpi,jpj) ,  & 
    438391         &      wfx_ice(jpi,jpj) , wfx_sub    (jpi,jpj) , wfx_ice_sub(jpi,jpj) , wfx_lam    (jpi,jpj) ,  & 
    439          &      wfx_pnd(jpi,jpj) ,                                                              & 
    440          &      wfx_bog(jpi,jpj) , wfx_dyn(jpi,jpj) , wfx_bom(jpi,jpj) , wfx_sum(jpi,jpj) ,     & 
    441          &      wfx_res(jpi,jpj) , wfx_sni(jpi,jpj) , wfx_opw(jpi,jpj) , wfx_spr(jpi,jpj) ,     & 
    442          &      afx_tot(jpi,jpj) , rn_amax_2d(jpi,jpj),                                         & 
    443          &      fhtur  (jpi,jpj) , qlead  (jpi,jpj) ,                                           & 
     392         &      wfx_pnd(jpi,jpj) ,                                                                       & 
     393         &      wfx_bog(jpi,jpj) , wfx_dyn(jpi,jpj) , wfx_bom(jpi,jpj) , wfx_sum(jpi,jpj) ,              & 
     394         &      wfx_res(jpi,jpj) , wfx_sni(jpi,jpj) , wfx_opw(jpi,jpj) , wfx_spr(jpi,jpj) ,              & 
     395         &      afx_tot(jpi,jpj) , rn_amax_2d(jpi,jpj),                                                  & 
     396         &      fhtur  (jpi,jpj) , qlead  (jpi,jpj) ,                                                    & 
    444397         &      sfx_res(jpi,jpj) , sfx_bri(jpi,jpj) , sfx_dyn(jpi,jpj) , sfx_sub(jpi,jpj) , sfx_lam(jpi,jpj) ,  & 
    445398         &      sfx_bog(jpi,jpj) , sfx_bom(jpi,jpj) , sfx_sum(jpi,jpj) , sfx_sni(jpi,jpj) , sfx_opw(jpi,jpj) ,  & 
    446          &      hfx_res(jpi,jpj) , hfx_snw(jpi,jpj) , hfx_sub(jpi,jpj) ,     &  
     399         &      hfx_res(jpi,jpj) , hfx_snw(jpi,jpj) , hfx_sub(jpi,jpj) ,                        &  
    447400         &      hfx_in (jpi,jpj) , hfx_out(jpi,jpj) , fhld   (jpi,jpj) ,                        & 
    448401         &      hfx_sum(jpi,jpj) , hfx_bom(jpi,jpj) , hfx_bog(jpi,jpj) , hfx_dif(jpi,jpj) ,     & 
     
    452405      ! * Ice global state variables 
    453406      ii = ii + 1 
    454       ALLOCATE( ftr_ice(jpi,jpj,jpl) , cnd_ice(jpi,jpj,jpl) , t1_ice(jpi,jpj,jpl) , & 
    455          &      h_i (jpi,jpj,jpl) , a_i (jpi,jpj,jpl) , v_i (jpi,jpj,jpl) ,     & 
    456          &      v_s (jpi,jpj,jpl) , h_s (jpi,jpj,jpl) , t_su(jpi,jpj,jpl) ,     & 
    457          &      s_i (jpi,jpj,jpl) , sv_i(jpi,jpj,jpl) , o_i (jpi,jpj,jpl) ,     & 
    458          &      oa_i(jpi,jpj,jpl) , bv_i(jpi,jpj,jpl) ,  STAT=ierr(ii) ) 
    459       ii = ii + 1 
    460       ALLOCATE( u_ice(jpi,jpj) , v_ice(jpi,jpj) ,                                      & 
    461          &      vt_i (jpi,jpj) , vt_s (jpi,jpj) , at_i(jpi,jpj) , ato_i(jpi,jpj) ,     & 
    462          &      et_i (jpi,jpj) , et_s (jpi,jpj) , tm_i(jpi,jpj) , tm_s (jpi,jpj) , bvm_i(jpi,jpj) ,  & 
    463          &      sm_i (jpi,jpj) , tm_su(jpi,jpj) , hm_i(jpi,jpj) , hm_s (jpi,jpj) ,     & 
    464          &      om_i (jpi,jpj) , tau_icebfr(jpi,jpj)                             , STAT=ierr(ii) ) 
     407      ALLOCATE( ftr_ice(jpi,jpj,jpl) , cnd_ice(jpi,jpj,jpl) , t1_ice(jpi,jpj,jpl) ,  & 
     408         &      h_i    (jpi,jpj,jpl) , a_i    (jpi,jpj,jpl) , v_i   (jpi,jpj,jpl) ,  & 
     409         &      v_s    (jpi,jpj,jpl) , h_s    (jpi,jpj,jpl) , t_su  (jpi,jpj,jpl) ,  & 
     410         &      s_i    (jpi,jpj,jpl) , sv_i   (jpi,jpj,jpl) , o_i   (jpi,jpj,jpl) ,  & 
     411         &      oa_i   (jpi,jpj,jpl) , bv_i   (jpi,jpj,jpl) , STAT=ierr(ii) ) 
     412 
     413      ii = ii + 1 
     414      ALLOCATE( u_ice(jpi,jpj) , v_ice(jpi,jpj) ,                                   & 
     415         &      vt_i (jpi,jpj) , vt_s (jpi,jpj) , at_i(jpi,jpj) , ato_i(jpi,jpj) ,  & 
     416         &      et_i (jpi,jpj) , et_s (jpi,jpj) , tm_i(jpi,jpj) , tm_s (jpi,jpj) ,  & 
     417         &      sm_i (jpi,jpj) , tm_su(jpi,jpj) , hm_i(jpi,jpj) , hm_s (jpi,jpj) ,  & 
     418         &      om_i (jpi,jpj) , bvm_i(jpi,jpj) , tau_icebfr(jpi,jpj)            , STAT=ierr(ii) ) 
     419 
    465420      ii = ii + 1 
    466421      ALLOCATE( t_s(jpi,jpj,nlay_s,jpl) , e_s(jpi,jpj,nlay_s,jpl) , STAT=ierr(ii) ) 
     422 
    467423      ii = ii + 1 
    468424      ALLOCATE( t_i(jpi,jpj,nlay_i,jpl) , e_i(jpi,jpj,nlay_i,jpl) , sz_i(jpi,jpj,nlay_i,jpl) , STAT=ierr(ii) ) 
     
    470426      ii = ii + 1 
    471427      ALLOCATE( a_ip(jpi,jpj,jpl) , v_ip(jpi,jpj,jpl) , a_ip_frac(jpi,jpj,jpl) , h_ip(jpi,jpj,jpl) , STAT = ierr(ii) ) 
     428 
    472429      ii = ii + 1 
    473430      ALLOCATE( at_ip(jpi,jpj) , vt_ip(jpi,jpj) , STAT = ierr(ii) ) 
     
    475432      ! * Old values of global variables 
    476433      ii = ii + 1 
    477       ALLOCATE( v_s_b  (jpi,jpj,jpl) , v_i_b (jpi,jpj,jpl) , h_s_b(jpi,jpj,jpl)        , h_i_b(jpi,jpj,jpl)        ,   & 
    478          &      a_i_b  (jpi,jpj,jpl) , sv_i_b(jpi,jpj,jpl) , e_i_b(jpi,jpj,nlay_i,jpl) , e_s_b(jpi,jpj,nlay_s,jpl) ,   & 
    479          &      oa_i_b (jpi,jpj,jpl)                                                   , STAT=ierr(ii) ) 
     434      ALLOCATE( v_s_b (jpi,jpj,jpl) , v_i_b (jpi,jpj,jpl) , h_s_b(jpi,jpj,jpl)        , h_i_b(jpi,jpj,jpl)        ,   & 
     435         &      a_i_b (jpi,jpj,jpl) , sv_i_b(jpi,jpj,jpl) , e_i_b(jpi,jpj,nlay_i,jpl) , e_s_b(jpi,jpj,nlay_s,jpl) ,   & 
     436         &      oa_i_b(jpi,jpj,jpl)                                                   , STAT=ierr(ii) ) 
     437 
    480438      ii = ii + 1 
    481439      ALLOCATE( u_ice_b(jpi,jpj) , v_ice_b(jpi,jpj) , at_i_b(jpi,jpj) , STAT=ierr(ii) ) 
  • NEMO/trunk/src/ICE/ice1d.F90

    r9598 r9604  
    44   !! sea-ice :   Ice thermodynamics variables in 1D 
    55   !!===================================================================== 
    6    !! History :  3.0  !  2002-11  (C. Ethe)  F90: Free form and module 
     6   !! History :  3.0  !  2002-11  (C. Ethe)          original code 
     7   !!            4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
    78   !!---------------------------------------------------------------------- 
    89#if defined key_si3 
     
    179180      ii = 1 
    180181      ALLOCATE( nptidx    (jpij) ,   & 
    181          &      qlead_1d  (jpij) , ftr_ice_1d(jpij) , qsr_ice_1d (jpij) ,   & 
    182          &      qns_ice_1d(jpij) ,   & 
    183          &      qml_ice_1d(jpij) , qcn_ice_1d(jpij) , qsr_ice_tr_1d(jpij) , & 
    184          &      cnd_ice_1d(jpij) , t1_ice_1d(jpij)  , t_bo_1d   (jpij) ,      & 
    185          &      hfx_sum_1d(jpij) , hfx_bom_1d(jpij) , hfx_bog_1d(jpij) ,    &  
    186          &      hfx_dif_1d(jpij) , hfx_opw_1d(jpij) , hfx_dyn_1d(jpij) ,    & 
     182         &      qlead_1d  (jpij) , ftr_ice_1d(jpij) , qsr_ice_1d(jpij) ,   & 
     183         &      qns_ice_1d(jpij) , qml_ice_1d(jpij) , qcn_ice_1d(jpij) , qsr_ice_tr_1d(jpij) , & 
     184         &      cnd_ice_1d(jpij) , t1_ice_1d (jpij) , t_bo_1d   (jpij) ,   & 
     185         &      hfx_sum_1d(jpij) , hfx_bom_1d(jpij) , hfx_bog_1d(jpij) ,   &  
     186         &      hfx_dif_1d(jpij) , hfx_opw_1d(jpij) , hfx_dyn_1d(jpij) ,   & 
    187187         &      rn_amax_1d(jpij) ,                                         & 
    188188         &      hfx_thd_1d(jpij) , hfx_spr_1d(jpij) ,                      & 
     
    191191      ! 
    192192      ii = ii + 1 
    193       ALLOCATE( sprecip_1d (jpij) , at_i_1d    (jpij) , ato_i_1d(jpij) ,                    & 
    194          &      fhtur_1d   (jpij) , wfx_snw_sni_1d (jpij) , wfx_spr_1d (jpij) , wfx_snw_sum_1d(jpij) , & 
    195          &      fhld_1d    (jpij) , wfx_sub_1d (jpij) , wfx_bog_1d (jpij) , wfx_bom_1d(jpij) ,  & 
    196          &      wfx_sum_1d(jpij)  , wfx_sni_1d (jpij) , wfx_opw_1d (jpij) , wfx_res_1d(jpij) ,  & 
    197          &      wfx_snw_sub_1d(jpij), wfx_snw_dyn_1d(jpij), wfx_ice_sub_1d(jpij), wfx_err_sub_1d(jpij) ,   & 
    198          &      wfx_lam_1d(jpij)  , wfx_dyn_1d(jpij), wfx_pnd_1d(jpij),dqns_ice_1d(jpij) , evap_ice_1d (jpij),  & 
    199          &      qprec_ice_1d(jpij),                                                             &   
    200          &      sfx_bri_1d (jpij) , sfx_bog_1d (jpij) , sfx_bom_1d (jpij) , sfx_sum_1d (jpij),  & 
    201          &      sfx_sni_1d (jpij) , sfx_opw_1d (jpij) , sfx_res_1d (jpij) , sfx_sub_1d (jpij),  & 
    202          &      sfx_lam_1d (jpij) , sfx_dyn_1d(jpij)  , STAT=ierr(ii) ) 
    203       ! 
    204       ii = ii + 1 
    205       ALLOCATE( t_su_1d  (jpij) , t_si_1d   (jpij) , a_i_1d  (jpij) , a_ib_1d(jpij) ,                  & 
    206          &      h_i_1d  (jpij) , h_ib_1d  (jpij) , h_s_1d (jpij) , fc_su  (jpij) , fc_bo_i(jpij) ,  &     
    207          &      dh_s_tot (jpij) , dh_i_surf (jpij) , dh_i_sub(jpij) ,                                  &     
    208          &      dh_i_bott(jpij) , dh_s_mlt(jpij), dh_snowice(jpij) , s_i_1d (jpij) , s_i_new(jpij) , & 
    209          &      a_ip_1d  (jpij) , v_ip_1d   (jpij) , v_i_1d  (jpij) , v_s_1d (jpij) , & 
    210          &      h_ip_1d  (jpij) , a_ip_frac_1d(jpij) , & 
    211          &      sv_i_1d (jpij) , oa_i_1d   (jpij) , STAT=ierr(ii) ) 
     193      ALLOCATE( sprecip_1d    (jpij) , at_i_1d       (jpij) , ato_i_1d      (jpij) ,                         & 
     194         &      fhtur_1d      (jpij) , wfx_snw_sni_1d(jpij) , wfx_spr_1d    (jpij) , wfx_snw_sum_1d(jpij) , & 
     195         &      fhld_1d       (jpij) , wfx_sub_1d    (jpij) , wfx_bog_1d    (jpij) , wfx_bom_1d    (jpij) ,  & 
     196         &      wfx_sum_1d    (jpij) , wfx_sni_1d    (jpij) , wfx_opw_1d    (jpij) , wfx_res_1d    (jpij) ,  & 
     197         &      wfx_snw_sub_1d(jpij) , wfx_snw_dyn_1d(jpij) , wfx_ice_sub_1d(jpij) , wfx_err_sub_1d(jpij) ,  & 
     198         &      wfx_lam_1d    (jpij) , wfx_dyn_1d    (jpij) , wfx_pnd_1d    (jpij) , dqns_ice_1d   (jpij) , evap_ice_1d (jpij) , & 
     199         &      qprec_ice_1d  (jpij) ,                                                             &   
     200         &      sfx_bri_1d    (jpij) , sfx_bog_1d (jpij) , sfx_bom_1d (jpij) , sfx_sum_1d (jpij),  & 
     201         &      sfx_sni_1d    (jpij) , sfx_opw_1d (jpij) , sfx_res_1d (jpij) , sfx_sub_1d (jpij),  & 
     202         &      sfx_lam_1d    (jpij) , sfx_dyn_1d(jpij)  , STAT=ierr(ii) ) 
     203      ! 
     204      ii = ii + 1 
     205      ALLOCATE( t_su_1d  (jpij) , t_si_1d  (jpij) , a_i_1d    (jpij) , a_ib_1d(jpij) ,                  & 
     206         &      h_i_1d   (jpij) , h_ib_1d  (jpij) , h_s_1d    (jpij) , fc_su  (jpij) , fc_bo_i(jpij) ,  &     
     207         &      dh_s_tot (jpij) , dh_i_surf(jpij) , dh_i_sub  (jpij) ,                                  &     
     208         &      dh_i_bott(jpij) , dh_s_mlt (jpij) , dh_snowice(jpij) , s_i_1d (jpij) , s_i_new(jpij) , & 
     209         &      a_ip_1d  (jpij) , v_ip_1d  (jpij) , v_i_1d    (jpij) , v_s_1d (jpij) ,                  & 
     210         &      h_ip_1d  (jpij) , a_ip_frac_1d(jpij) ,                                                  & 
     211         &      sv_i_1d  (jpij) , oa_i_1d  (jpij) , STAT=ierr(ii) ) 
    212212      ! 
    213213      ii = ii + 1 
    214214      ALLOCATE( t_s_1d  (jpij,nlay_s)     , t_i_1d (jpij,nlay_i)     , sz_i_1d(jpij,nlay_i) ,  &             
    215          &      e_i_1d  (jpij,nlay_i)     , e_s_1d (jpij,nlay_s)     ,                        & 
     215         &      e_i_1d  (jpij,nlay_i)     , e_s_1d (jpij,nlay_s)     ,                         & 
    216216         &      eh_i_old(jpij,0:nlay_i+1) , h_i_old(jpij,0:nlay_i+1) , STAT=ierr(ii) ) 
    217217      ! 
     
    223223      ! 
    224224      ii = ii + 1 
    225       ALLOCATE( a_i_2d(jpij,jpl) , a_ib_2d(jpij,jpl) , h_i_2d(jpij,jpl) , h_ib_2d(jpij,jpl) , & 
    226          &      v_i_2d(jpij,jpl) ,v_s_2d(jpij,jpl) ,oa_i_2d(jpij,jpl) ,sv_i_2d(jpij,jpl) ,  & 
    227          &      a_ip_2d(jpij,jpl) ,v_ip_2d(jpij,jpl) ,t_su_2d(jpij,jpl) ,  & 
     225      ALLOCATE( a_i_2d (jpij,jpl) , a_ib_2d(jpij,jpl) , h_i_2d (jpij,jpl) , h_ib_2d(jpij,jpl) , & 
     226         &      v_i_2d (jpij,jpl) , v_s_2d (jpij,jpl) , oa_i_2d(jpij,jpl) , sv_i_2d(jpij,jpl) ,  & 
     227         &      a_ip_2d(jpij,jpl) , v_ip_2d(jpij,jpl) , t_su_2d(jpij,jpl) ,                      & 
    228228         &      STAT=ierr(ii) ) 
    229229 
  • NEMO/trunk/src/ICE/icealb.F90

    r9598 r9604  
    44   !! Atmospheric forcing:  Albedo over sea ice 
    55   !!===================================================================== 
    6    !! History :  4.0  ! 2017-07  (C. Rousset) Split ice and ocean albedos 
     6   !! History :  4.0  !  2017-07  (C. Rousset)       Split ice and ocean albedos 
     7   !!            4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
    78   !!---------------------------------------------------------------------- 
    89#if defined key_si3 
     
    2829 
    2930   REAL(wp), PUBLIC, PARAMETER ::   rn_alb_oce = 0.066   !: ocean or lead albedo (Pegau and Paulson, Ann. Glac. 2001) 
    30  
    31    REAL(wp) , PARAMETER ::   ppc1    = 0.05    ! snow thickness (only for nn_ice_alb=0) 
    32    REAL(wp) , PARAMETER ::   ppc2    = 0.10    !  "        " 
    33    REAL(wp) , PARAMETER ::   ppcloud = 0.06    ! cloud effect on albedo (only-for nn_ice_alb=0) 
    34    REAL(wp) , PARAMETER ::   pp1_c1 = 1. / ppc1 
    35    REAL(wp) , PARAMETER ::   pp1_c2 = 1. / ppc2 
    3631   ! 
    3732   !                             !!* albedo namelist (namalb) 
  • NEMO/trunk/src/ICE/icecor.F90

    r9598 r9604  
    22   !!====================================================================== 
    33   !!                     ***  MODULE  icecor  *** 
    4    !!   SI3 : Corrections on sea-ice variables at the end of the time step 
     4   !!   sea-ice: Corrections on sea-ice variables at the end of the time step 
    55   !!====================================================================== 
    66   !! History :  3.0  !  2006-04  (M. Vancoppenolle) Original code 
    77   !!            3.5  !  2014-06  (C. Rousset)       Complete rewriting/cleaning 
     8   !!            4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
    89   !!---------------------------------------------------------------------- 
    910#if defined key_si3 
  • NEMO/trunk/src/ICE/icectl.F90

    r9598 r9604  
    66   !! History :  3.5  !  2015-01  (M. Vancoppenolle) Original code 
    77   !!            3.7  !  2016-10  (C. Rousset)       Add routine ice_prt3D 
     8   !!            4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
    89   !!---------------------------------------------------------------------- 
    910#if defined key_si3 
  • NEMO/trunk/src/ICE/icedia.F90

    r9598 r9604  
    22   !!====================================================================== 
    33   !!                       ***  MODULE icedia  *** 
    4    !!  Sea-Ice model :   global budgets  
     4   !!  Sea-Ice:   global budgets  
    55   !!====================================================================== 
    6    !! History :  3.4  ! 2012-10  (C. Rousset)  original code 
    7    !!            4.0  ! 2017-08  (C. Rousset)  fits nemo4.0 standards 
     6   !! History :  3.4  !  2012-10  (C. Rousset)       original code 
     7   !!            4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
    88   !!---------------------------------------------------------------------- 
    99#if defined key_si3 
  • NEMO/trunk/src/ICE/icedyn.F90

    r9598 r9604  
    44   !!   Sea-Ice dynamics : master routine for sea ice dynamics  
    55   !!====================================================================== 
    6    !! history :  4.0  ! 2017-09  (C. Rousset)  original code  
     6   !! history :  4.0  ! 2018  (C. Rousset)  original code SI3 [aka Sea Ice cube] 
    77   !!---------------------------------------------------------------------- 
    88#if defined key_si3 
     
    6363      !! ** Purpose :   this routine manages sea ice dynamics 
    6464      !! 
    65       !! ** Action : - Initialisation of some variables 
    66       !!             - call ice_rhg 
     65      !! ** Action : - calculation of friction in case of landfast ice 
     66      !!             - call ice_dyn_rhg    = rheology 
     67      !!             - call ice_dyn_adv    = advection 
     68      !!             - call ice_dyn_rdgrft = ridging/rafting 
     69      !!             - call ice_cor        = corrections if fields are out of bounds 
    6770      !!-------------------------------------------------------------------- 
    6871      INTEGER, INTENT(in) ::   kt     ! ice time step 
  • NEMO/trunk/src/ICE/icedyn_adv.F90

    r9598 r9604  
    22   !!====================================================================== 
    33   !!                       ***  MODULE icedyn_adv   *** 
    4    !!   SI3 : sea-ice advection 
     4   !!   sea-ice: advection 
    55   !!====================================================================== 
    6    !! History : LIM-2 ! 2000-01 (M.A. Morales Maqueda, H. Goosse, and T. Fichefet)  Original code 
    7    !!            3.0  ! 2005-11 (M. Vancoppenolle)   Multi-layer sea ice, salinity variations 
    8    !!            4.0  ! 2011-02 (G. Madec) dynamical allocation 
     6   !! History :  4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
    97   !!---------------------------------------------------------------------- 
    108#if defined key_si3 
  • NEMO/trunk/src/ICE/icedyn_adv_pra.F90

    r9598 r9604  
    44   !!   sea-ice : advection => Prather scheme 
    55   !!====================================================================== 
    6    !! History :  LIM  ! 2008-03 (M. Vancoppenolle)  LIM-3 from LIM-2 code 
    7    !!            3.2  ! 2009-06 (F. Dupont)  correct a error in the North fold b.c. 
    8    !!            4.0  ! 2011-02 (G. Madec) dynamical allocation 
     6   !! History :       !  2008-03  (M. Vancoppenolle) LIM-3 from LIM-2 code 
     7   !!            4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
    98   !!-------------------------------------------------------------------- 
    109#if defined key_si3 
  • NEMO/trunk/src/ICE/icedyn_adv_umx.F90

    r9598 r9604  
    55   !!============================================================================== 
    66   !! History :  3.6  !  2014-11  (C. Rousset, G. Madec)  Original code 
     7   !!            4.0  !  2018     (many people)           SI3 [aka Sea Ice cube] 
    78   !!---------------------------------------------------------------------- 
    89#if defined key_si3 
  • NEMO/trunk/src/ICE/icedyn_rdgrft.F90

    r9598 r9604  
    44   !!    sea-ice : Mechanical impact on ice thickness distribution       
    55   !!====================================================================== 
    6    !! History :  LIM  ! 2006-02  (M. Vancoppenolle) Original code  
    7    !!            3.2  ! 2009-07  (M. Vancoppenolle, Y. Aksenov, G. Madec) bug correction in smsw & sfx_dyn 
    8    !!            4.0  ! 2011-02  (G. Madec) dynamical allocation 
     6   !! History :       !  2006-02  (M. Vancoppenolle) Original code  
     7   !!            4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
    98   !!---------------------------------------------------------------------- 
    109#if defined key_si3 
  • NEMO/trunk/src/ICE/icedyn_rhg.F90

    r9598 r9604  
    44   !!   Sea-Ice dynamics : master routine for rheology  
    55   !!====================================================================== 
    6    !! history :  1.0  ! 2002-08  (C. Ethe, G. Madec)  original VP code  
    7    !!            3.0  ! 2007-03  (MA Morales Maqueda, S. Bouillon, M. Vancoppenolle)  LIM3: EVP-Cgrid 
    8    !!            3.5  ! 2011-02  (G. Madec) dynamical allocation 
     6   !! history :  4.0  !  2018     (C. Rousset)      Original code 
    97   !!---------------------------------------------------------------------- 
    108#if defined key_si3 
  • NEMO/trunk/src/ICE/icedyn_rhg_evp.F90

    r9598 r9604  
    77   !!            3.0  !  2008-03  (M. Vancoppenolle) LIM3 
    88   !!             -   !  2008-11  (M. Vancoppenolle, S. Bouillon, Y. Aksenov) add surface tilt in ice rheolohy  
    9    !!            3.3  !  2009-05  (G.Garric) addition of the evp cas 
    10    !!            3.4  !  2011-01  (A. Porter)  dynamical allocation  
    11    !!            3.5  !  2012-08  (R. Benshila)  AGRIF 
    12    !!            3.6  !  2016-06  (C. Rousset) Rewriting + landfast ice + possibility to use mEVP (Bouillon 2013) 
     9   !!            3.3  !  2009-05  (G.Garric)    addition of the evp case 
     10   !!            3.4  !  2011-01  (A. Porter)   dynamical allocation  
     11   !!            3.5  !  2012-08  (R. Benshila) AGRIF 
     12   !!            3.6  !  2016-06  (C. Rousset)  Rewriting + landfast ice + possibility to use mEVP (Bouillon 2013) 
     13   !!            3.7  !  2017     (C. Rousset)  add aEVP (Kimmritz 2016-2017) 
     14   !!            4.0  !  2018     (many people) SI3 [aka Sea Ice cube] 
    1315   !!---------------------------------------------------------------------- 
    1416#if defined key_si3 
  • NEMO/trunk/src/ICE/iceforcing.F90

    r9598 r9604  
    44   !! Sea-Ice :   air-ice forcing fields 
    55   !!===================================================================== 
    6    !! History :  4.0  ! 2017-08  (C. Rousset) Original code 
     6   !! History :  4.0  !  2017-08  (C. Rousset)       Original code 
     7   !!            4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
    78   !!---------------------------------------------------------------------- 
    89#if defined key_si3 
  • NEMO/trunk/src/ICE/iceistate.F90

    r9598 r9604  
    44   !!   sea-ice : Initialization of ice variables 
    55   !!====================================================================== 
    6    !! History :  2.0  ! 2004-01 (C. Ethe, G. Madec)  Original code 
    7    !!            3.0  ! 2007    (M. Vancoppenolle)  Rewrite for ice cats 
    8    !!            3.0  ! 2009-11 (M. Vancoppenolle)  Enhanced version for ice cats 
    9    !!            3.0  ! 2011-02 (G. Madec)  dynamical allocation 
    10    !!             -   ! 2014    (C. Rousset)  add N/S initializations 
     6   !! History :  2.0  !  2004-01  (C. Ethe, G. Madec) Original code 
     7   !!            3.0  !  2007     (M. Vancoppenolle)  Rewrite for ice cats 
     8   !!            4.0  !  2018     (many people)       SI3 [aka Sea Ice cube] 
    119   !!---------------------------------------------------------------------- 
    1210#if defined key_si3 
  • NEMO/trunk/src/ICE/iceitd.F90

    r9598 r9604  
    44   !!   sea-ice : ice thickness distribution 
    55   !!====================================================================== 
    6    !! History :   -   !          (W. H. Lipscomb and E.C. Hunke) CICE (c) original code 
    7    !!            3.0  ! 2005-12  (M. Vancoppenolle) adaptation to LIM-3 
    8    !!             -   ! 2006-06  (M. Vancoppenolle) adaptation to include salt, age 
    9    !!             -   ! 2007-04  (M. Vancoppenolle) Mass conservation checked 
     6   !! History :  3.0  !  2005-12  (M. Vancoppenolle) original code (based on CICE) 
     7   !!            4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
    108   !!---------------------------------------------------------------------- 
    119#if defined key_si3 
  • NEMO/trunk/src/ICE/icerst.F90

    r9598 r9604  
    44   !!   sea-ice :  write/read the ice restart file 
    55   !!====================================================================== 
    6    !! History:   3.0  ! 2005-04 (M. Vancoppenolle) Original code 
    7    !!             -   ! 2008-03 (C. Ethe) restart files in using IOM interface 
    8    !!            3.4  ! 2011-02 (G. Madec) dynamical allocation 
    9    !!            4.0  ! 2017-11 (M. Andrejczuk) Extend IOM interface to write 3D ice fields 
     6   !! History:   4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
    107   !!---------------------------------------------------------------------- 
    118#if defined key_si3 
  • NEMO/trunk/src/ICE/icestp.F90

    r9598 r9604  
    22   !!====================================================================== 
    33   !!                       ***  MODULE  icestp  *** 
    4    !! Surface module :  update the ocean surface boundary condition over ice 
    5    !!                   covered area using SI3 sea-ice model 
     4   !! sea ice : Master routine for all the sea ice model 
    65   !!===================================================================== 
    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) 
     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   !!     in France and UK: 
     24   !!    * ... 
     25   !!====================================================================== 
     26   !! History :  4.0  !  2018     (C. Rousset)      Original code SI3 
    1527   !!---------------------------------------------------------------------- 
    1628#if defined key_si3 
     
    315327      ENDIF 
    316328      ! 
    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 
     329      IF( ln_cpl .AND. nn_cats_cpl /= 1 .AND. nn_cats_cpl /= jpl ) THEN 
     330         CALL ctl_stop( 'STOP', 'par_init: in coupled mode, nn_cats_cpl should be either 1 or jpl' ) 
     331      ENDIF 
    320332      ! 
    321333      IF( ln_bdy .AND. ln_icediachk )   CALL ctl_warn('par_init: online conservation check does not work with BDY') 
  • NEMO/trunk/src/ICE/icetab.F90

    r9598 r9604  
    44   !!   sea-ice : transform 1D (2D) array to a 2D (1D) table 
    55   !!====================================================================== 
     6   !! History :  4.0  !  2018     (C. Rousset)       Original code SI3 
     7   !!---------------------------------------------------------------------- 
    68#if defined key_si3 
    79   !!---------------------------------------------------------------------- 
  • NEMO/trunk/src/ICE/icethd.F90

    r9598 r9604  
    44   !!   sea-ice : master routine for thermodynamics 
    55   !!====================================================================== 
    6    !! History :  LIM  ! 2000-01 (M.A. Morales Maqueda, H. Goosse, T. Fichefet) LIM-1 
    7    !!            2.0  ! 2002-07 (C. Ethe, G. Madec)  LIM-2 (F90 rewriting) 
    8    !!            3.0  ! 2005-11 (M. Vancoppenolle)  LIM-3 : Multi-layer thermodynamics + salinity variations 
    9    !!             -   ! 2007-04 (M. Vancoppenolle) add ice_thd_glohec, ice_thd_con_dh and ice_thd_con_dif 
    10    !!            3.2  ! 2009-07 (M. Vancoppenolle, Y. Aksenov, G. Madec) bug correction in wfx_snw 
    11    !!            3.3  ! 2010-11 (G. Madec) corrected snow melting heat (due to factor betas) 
    12    !!            4.0  ! 2011-02 (G. Madec) dynamical allocation 
    13    !!             -   ! 2012-05 (C. Rousset) add penetration solar flux 
     6   !! History :  1.0  !  2000-01  (M.A. Morales Maqueda, H. Goosse, T. Fichefet) LIM-1 
     7   !!            2.0  !  2002-07  (C. Ethe, G. Madec) LIM-2 
     8   !!            3.0  !  2005-11  (M. Vancoppenolle)  LIM-3 
     9   !!            4.0  !  2018     (many people)       SI3 [aka Sea Ice cube] 
    1410   !!---------------------------------------------------------------------- 
    1511#if defined key_si3 
     
    7369      !! ** Purpose : This routine manages ice thermodynamics 
    7470      !!          
    75       !! ** Action : - Initialisation of some variables 
    76       !!             - Some preliminary computation (oceanic heat flux 
    77       !!               at the ice base, snow acc.,heat budget of the leads) 
    78       !!             - selection of the icy points and put them in an array 
    79       !!             - call ice_thd_zdf  for vertical heat diffusion 
    80       !!             - call ice_thd_dh   for vertical ice growth and melt 
    81       !!             - call ice_thd_ent  for enthalpy remapping 
    82       !!             - call ice_thd_sal  for ice desalination 
    83       !!             - call ice_thd_temp to  retrieve temperature from ice enthalpy 
    84       !!             - call ice_thd_lam  for extra lateral ice melt if active virtual thickness distribution 
    85       !!             - call ice_thd_da   for lateral ice melt 
     71      !! ** Action : - computation of oceanic sensible heat flux at the ice base 
     72      !!                              energy budget in the leads 
     73      !!                              net fluxes on top of ice and of ocean 
     74      !!             - selection of grid cells with ice 
     75      !!                - call ice_thd_zdf  for vertical heat diffusion 
     76      !!                - call ice_thd_dh   for vertical ice growth and melt 
     77      !!                - call ice_thd_pnd  for melt ponds 
     78      !!                - call ice_thd_ent  for enthalpy remapping 
     79      !!                - call ice_thd_sal  for ice desalination 
     80      !!                - call ice_thd_temp to  retrieve temperature from ice enthalpy 
     81      !!                - call ice_thd_lam  for extra lateral ice melt if active virtual thickness distribution 
     82      !!                - call ice_thd_da   for lateral ice melt 
    8683      !!             - back to the geographic grid 
    87       !!             - call ice_thd_rem  for remapping thickness distribution 
    88       !!             - call ice_thd_do   for ice growth in leads 
     84      !!                - call ice_thd_rem  for remapping thickness distribution 
     85      !!                - call ice_thd_do   for ice growth in leads 
    8986      !!------------------------------------------------------------------- 
    9087      INTEGER, INTENT(in) :: kt    ! number of iteration 
  • NEMO/trunk/src/ICE/icethd_da.F90

    r9598 r9604  
    44   !!   sea-ice : lateral melting 
    55   !!====================================================================== 
    6    !! History :  4.0  ! 2016-03 (C. Rousset)  original code 
     6   !! History :  3.7  !  2016-03  (C. Rousset)       Original code 
     7   !!            4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
    78   !!--------------------------------------------------------------------- 
    89#if defined key_si3 
  • NEMO/trunk/src/ICE/icethd_dh.F90

    r9598 r9604  
    44   !!   seaice : thermodynamic growth and melt  
    55   !!====================================================================== 
    6    !! History :  LIM  ! 2003-05 (M. Vancoppenolle) Original code in 1D 
    7    !!                 ! 2005-06 (M. Vancoppenolle) 3D version  
    8    !!            3.2  ! 2009-07 (M. Vancoppenolle, Y. Aksenov, G. Madec) bug correction in wfx_snw & wfx_ice 
    9    !!            3.4  ! 2011-02 (G. Madec) dynamical allocation 
    10    !!            3.5  ! 2012-10 (G. Madec & co) salt flux + bug fixes  
     6   !! History :       !  2003-05  (M. Vancoppenolle) Original code in 1D 
     7   !!                 !  2005-06  (M. Vancoppenolle) 3D version  
     8   !!            4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
    119   !!---------------------------------------------------------------------- 
    1210#if defined key_si3 
     
    125123      END DO 
    126124      ! 
    127       ! ---------------------------------------------- ! 
    128       ! Available heat for surface and bottom ablation ! 
    129       ! ---------------------------------------------- ! 
    130       ! 
     125      !                       ! ============================================== ! 
     126      !                       ! Available heat for surface and bottom ablation ! 
     127      !                       ! ============================================== ! 
    131128      SELECT CASE( nice_jules ) 
    132129      ! 
  • NEMO/trunk/src/ICE/icethd_do.F90

    r9598 r9604  
    44   !!   sea-ice: sea ice growth in the leads (open water)   
    55   !!====================================================================== 
    6    !! History :  LIM  ! 2005-12 (M. Vancoppenolle)  Original code 
    7    !!             -   ! 2006-01 (M. Vancoppenolle)  add ITD 
    8    !!            3.0  ! 2007-07 (M. Vancoppenolle)  Mass and energy conservation tested 
    9    !!            4.0  ! 2011-02 (G. Madec) dynamical allocation 
     6   !! History :       !  2005-12  (M. Vancoppenolle) Original code 
     7   !!            4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
    108   !!---------------------------------------------------------------------- 
    119#if defined key_si3 
     
    5856      !!   
    5957      !! ** Purpose : Computation of the evolution of the ice thickness and  
    60       !!      concentration as a function of the heat balance in the leads. 
     58      !!              concentration as a function of the heat balance in the leads 
    6159      !!        
    62       !! ** Method  : Ice is formed in the open water when ocean lose heat 
    63       !!      (heat budget of open water Bl is negative) . 
    64       !!      Computation of the increase of 1-A (ice concentration) fol- 
    65       !!      lowing the law : 
    66       !!      (dA/dt)acc = F[ (1-A)/(1-a) ] * [ Bl / (Li*h0) ] 
    67       !!       where - h0 is the thickness of ice created in the lead 
    68       !!             - a is a minimum fraction for leads 
    69       !!             - F is a monotonic non-increasing function defined as: 
     60      !! ** Method  : Ice is formed in the open water when ocean looses heat 
     61      !!              (heat budget of open water is negative) following 
     62      !! 
     63      !!       (dA/dt)acc = F[ (1-A)/(1-a) ] * [ Bl / (Li*h0) ] 
     64      !!          where - h0 is the thickness of ice created in the lead 
     65      !!                - a is a minimum fraction for leads 
     66      !!                - F is a monotonic non-increasing function defined as: 
    7067      !!                  F(X)=( 1 - X**exld )**(1.0/exld) 
    71       !!             - exld is the exponent closure rate (=2 default val.) 
     68      !!                - exld is the exponent closure rate (=2 default val.) 
    7269      !!  
    7370      !! ** Action : - Adjustment of snow and ice thicknesses and heat 
     
    7976      !!------------------------------------------------------------------------ 
    8077      INTEGER  ::   ji, jj, jk, jl   ! dummy loop indices 
    81       INTEGER  ::   iter     !   -       - 
    82       REAL(wp) ::   ztmelts, zfrazb, zweight, zde                          ! local scalars 
     78      INTEGER  ::   iter             !   -       - 
     79      REAL(wp) ::   ztmelts, zfrazb, zweight, zde                               ! local scalars 
    8380      REAL(wp) ::   zgamafr, zvfrx, zvgx, ztaux, ztwogp, zf                     !   -      - 
    8481      REAL(wp) ::   ztenagm, zvfry, zvgy, ztauy, zvrel2, zfp, zsqcd , zhicrit   !   -      - 
     
    105102      REAL(wp), DIMENSION(jpij) ::   zvrel_1d    ! relative ice / frazil velocity (1D vector) 
    106103      ! 
    107       REAL(wp), DIMENSION(jpij,jpl) ::   zv_b      ! old volume of ice in category jl 
    108       REAL(wp), DIMENSION(jpij,jpl) ::   za_b      ! old area of ice in category jl 
     104      REAL(wp), DIMENSION(jpij,jpl) ::   zv_b    ! old volume of ice in category jl 
     105      REAL(wp), DIMENSION(jpij,jpl) ::   za_b    ! old area of ice in category jl 
    109106      ! 
    110107      REAL(wp), DIMENSION(jpij,nlay_i,jpl) ::   ze_i_2d !: 1-D version of e_i 
    111108      ! 
    112       REAL(wp), DIMENSION(jpi,jpj) ::   zvrel     ! relative ice / frazil velocity 
    113       ! 
    114       REAL(wp) :: zcai = 1.4e-3_wp                     ! ice-air drag (clem: should be dependent on coupling/forcing used) 
     109      REAL(wp), DIMENSION(jpi,jpj) ::   zvrel    ! relative ice / frazil velocity 
     110      ! 
     111      REAL(wp) :: zcai = 1.4e-3_wp               ! ice-air drag (clem: should be dependent on coupling/forcing used) 
    115112      !!-----------------------------------------------------------------------! 
    116113 
     
    121118 
    122119      !------------------------------------------------------------------------------! 
    123       ! 3) Collection thickness of ice formed in leads and polynyas 
     120      ! 1) Collection thickness of ice formed in leads and polynyas 
    124121      !------------------------------------------------------------------------------!     
    125122      ! ht_i_new is the thickness of new ice formed in open water 
    126       ! ht_i_new can be either prescribed (frazswi = 0) or computed (frazswi = 1) 
     123      ! ht_i_new can be either prescribed (ln_frazil=F) or computed (ln_frazil=T) 
    127124      ! Frazil ice forms in open water, is transported by wind 
    128125      ! accumulates at the edge of the consolidated ice edge 
     
    130127      ! collection thickness. 
    131128 
    132       ! Note : the following algorithm currently breaks vectorization 
    133       !  
    134  
    135129      zvrel(:,:) = 0._wp 
    136130 
     
    142136      IF( ln_frazil ) THEN 
    143137         ! 
    144          !-------------------- 
    145          ! Physical constants 
    146          !-------------------- 
    147138         ht_i_new(:,:) = 0._wp 
    148139         ! 
    149          zhicrit = 0.04 ! frazil ice thickness 
     140         ! Physical constants 
     141         zhicrit = 0.04                                          ! frazil ice thickness 
    150142         ztwogp  = 2. * rau0 / ( grav * 0.3 * ( rau0 - rhoic ) ) ! reduced grav 
    151          zsqcd   = 1.0 / SQRT( 1.3 * zcai ) ! 1/SQRT(airdensity*drag) 
     143         zsqcd   = 1.0 / SQRT( 1.3 * zcai )                      ! 1/SQRT(airdensity*drag) 
    152144         zgamafr = 0.03 
    153145         ! 
     
    155147            DO ji = 2, jpim1 
    156148               IF ( qlead(ji,jj) < 0._wp .AND. tau_icebfr(ji,jj) == 0._wp ) THEN ! activated if cooling and no landfast 
    157                   !------------- 
    158                   ! Wind stress 
    159                   !------------- 
    160                   ! C-grid wind stress components 
     149                  ! -- Wind stress -- ! 
    161150                  ztaux         = ( utau_ice(ji-1,jj  ) * umask(ji-1,jj  ,1)   & 
    162151                     &          +   utau_ice(ji  ,jj  ) * umask(ji  ,jj  ,1) ) * 0.5_wp 
     
    166155                  ztenagm       =  SQRT( SQRT( ztaux * ztaux + ztauy * ztauy ) ) 
    167156 
    168                   !--------------------- 
    169                   ! Frazil ice velocity 
    170                   !--------------------- 
     157                  ! -- Frazil ice velocity -- ! 
    171158                  rswitch = MAX( 0._wp, SIGN( 1._wp , ztenagm - epsi10 ) ) 
    172159                  zvfrx   = rswitch * zgamafr * zsqcd * ztaux / MAX( ztenagm, epsi10 ) 
    173160                  zvfry   = rswitch * zgamafr * zsqcd * ztauy / MAX( ztenagm, epsi10 ) 
    174161 
    175                   !------------------- 
    176                   ! Pack ice velocity 
    177                   !------------------- 
    178                   ! C-grid ice velocity 
     162                  ! -- Pack ice velocity -- ! 
    179163                  zvgx    = ( u_ice(ji-1,jj  ) * umask(ji-1,jj  ,1)  + u_ice(ji,jj) * umask(ji,jj,1) ) * 0.5_wp 
    180164                  zvgy    = ( v_ice(ji  ,jj-1) * vmask(ji  ,jj-1,1)  + v_ice(ji,jj) * vmask(ji,jj,1) ) * 0.5_wp 
    181165 
    182                   !----------------------------------- 
    183                   ! Relative frazil/pack ice velocity 
    184                   !----------------------------------- 
    185                   ! absolute relative velocity 
     166                  ! -- Relative frazil/pack ice velocity -- ! 
    186167                  rswitch      = MAX( 0._wp, SIGN( 1._wp , at_i(ji,jj) - epsi10 ) ) 
    187168                  zvrel2       = MAX(  ( zvfrx - zvgx ) * ( zvfrx - zvgx )   & 
     
    189170                  zvrel(ji,jj) = SQRT( zvrel2 ) 
    190171 
    191                   !--------------------- 
    192                   ! Iterative procedure 
    193                   !--------------------- 
     172                  ! -- new ice thickness (iterative loop) -- ! 
    194173                  ht_i_new(ji,jj) = zhicrit +   ( zhicrit + 0.1 )    & 
    195174                     &                   / ( ( zhicrit + 0.1 ) * ( zhicrit + 0.1 ) -  zhicrit * zhicrit ) * ztwogp * zvrel2 
     
    205184                  END DO 
    206185                  ! 
    207                ENDIF ! end of selection of pixels where ice forms 
     186               ENDIF 
    208187               ! 
    209188            END DO  
     
    212191         CALL lbc_lnk_multi( zvrel, 'T', 1., ht_i_new, 'T', 1.  ) 
    213192 
    214       ENDIF ! End of computation of frazil ice collection thickness 
     193      ENDIF 
    215194 
    216195      !------------------------------------------------------------------------------! 
    217       ! 4) Identify grid points where new ice forms 
     196      ! 2) Compute thickness, salinity, enthalpy, age, area and volume of new ice 
    218197      !------------------------------------------------------------------------------! 
    219  
    220       !------------------------------------- 
    221       ! Select points for new ice formation 
    222       !------------------------------------- 
    223198      ! This occurs if open water energy budget is negative (cooling) and there is no landfast ice 
     199 
     200      ! Identify grid points where new ice forms 
    224201      npti = 0   ;   nptidx(:) = 0 
    225202      DO jj = 1, jpj 
     
    232209      END DO 
    233210 
    234       !------------------------------ 
    235211      ! Move from 2-D to 1-D vectors 
    236       !------------------------------ 
    237       ! If ocean gains heat do nothing. Otherwise compute new ice formation 
    238  
    239212      IF ( npti > 0 ) THEN 
    240213 
     
    248221            END DO 
    249222         END DO 
    250          CALL tab_2d_1d( npti, nptidx(1:npti), qlead_1d  (1:npti) , qlead       ) 
    251          CALL tab_2d_1d( npti, nptidx(1:npti), t_bo_1d   (1:npti) , t_bo        ) 
    252          CALL tab_2d_1d( npti, nptidx(1:npti), sfx_opw_1d(1:npti) , sfx_opw     ) 
    253          CALL tab_2d_1d( npti, nptidx(1:npti), wfx_opw_1d(1:npti) , wfx_opw     ) 
    254          CALL tab_2d_1d( npti, nptidx(1:npti), zh_newice (1:npti) , ht_i_new    ) 
    255          CALL tab_2d_1d( npti, nptidx(1:npti), zvrel_1d  (1:npti) , zvrel       ) 
    256  
    257          CALL tab_2d_1d( npti, nptidx(1:npti), hfx_thd_1d(1:npti) , hfx_thd     ) 
    258          CALL tab_2d_1d( npti, nptidx(1:npti), hfx_opw_1d(1:npti) , hfx_opw     ) 
    259          CALL tab_2d_1d( npti, nptidx(1:npti), rn_amax_1d(1:npti) , rn_amax_2d  ) 
    260          CALL tab_2d_1d( npti, nptidx(1:npti), sss_1d    (1:npti) , sss_m       ) 
    261  
    262          !------------------------------------------------------------------------------| 
    263          ! 2) Convert units for ice internal energy 
    264          !------------------------------------------------------------------------------| 
     223         CALL tab_2d_1d( npti, nptidx(1:npti), qlead_1d  (1:npti) , qlead      ) 
     224         CALL tab_2d_1d( npti, nptidx(1:npti), t_bo_1d   (1:npti) , t_bo       ) 
     225         CALL tab_2d_1d( npti, nptidx(1:npti), sfx_opw_1d(1:npti) , sfx_opw    ) 
     226         CALL tab_2d_1d( npti, nptidx(1:npti), wfx_opw_1d(1:npti) , wfx_opw    ) 
     227         CALL tab_2d_1d( npti, nptidx(1:npti), zh_newice (1:npti) , ht_i_new   ) 
     228         CALL tab_2d_1d( npti, nptidx(1:npti), zvrel_1d  (1:npti) , zvrel      ) 
     229 
     230         CALL tab_2d_1d( npti, nptidx(1:npti), hfx_thd_1d(1:npti) , hfx_thd    ) 
     231         CALL tab_2d_1d( npti, nptidx(1:npti), hfx_opw_1d(1:npti) , hfx_opw    ) 
     232         CALL tab_2d_1d( npti, nptidx(1:npti), rn_amax_1d(1:npti) , rn_amax_2d ) 
     233         CALL tab_2d_1d( npti, nptidx(1:npti), sss_1d    (1:npti) , sss_m      ) 
     234 
     235         ! Convert units for ice internal energy 
    265236         DO jl = 1, jpl 
    266237            DO jk = 1, nlay_i                
     
    272243            END DO 
    273244         END DO 
    274          !------------------------------------------------------------------------------! 
    275          ! 5) Compute thickness, salinity, enthalpy, age, area and volume of new ice 
    276          !------------------------------------------------------------------------------! 
    277  
    278          !----------------------------------------- 
     245 
    279246         ! Keep old ice areas and volume in memory 
    280          !----------------------------------------- 
    281247         zv_b(1:npti,:) = v_i_2d(1:npti,:)  
    282248         za_b(1:npti,:) = a_i_2d(1:npti,:) 
    283249 
    284          !---------------------- 
    285          ! Salinity of new ice  
    286          !---------------------- 
     250         ! --- Salinity of new ice --- !  
    287251         SELECT CASE ( nn_icesal ) 
    288252         CASE ( 1 )                    ! Sice = constant  
     
    296260         END SELECT 
    297261 
    298          !------------------------- 
    299          ! Heat content of new ice 
    300          !------------------------- 
     262         ! --- Heat content of new ice --- ! 
    301263         ! We assume that new ice is formed at the seawater freezing point 
    302264         DO ji = 1, npti 
     
    307269         END DO 
    308270 
    309          !---------------- 
    310          ! Age of new ice 
    311          !---------------- 
     271         ! --- Age of new ice --- ! 
    312272         zo_newice(1:npti) = 0._wp 
    313273 
    314          !------------------- 
    315          ! Volume of new ice 
    316          !------------------- 
     274         ! --- Volume of new ice --- ! 
    317275         DO ji = 1, npti 
    318276 
     
    351309         END IF 
    352310          
    353          !----------------- 
    354          ! Area of new ice 
    355          !----------------- 
     311         ! --- Area of new ice --- ! 
    356312         DO ji = 1, npti 
    357313            za_newice(ji) = zv_newice(ji) / zh_newice(ji) 
     
    359315 
    360316         !------------------------------------------------------------------------------! 
    361          ! 6) Redistribute new ice area and volume into ice categories                  ! 
     317         ! 3) Redistribute new ice area and volume into ice categories                  ! 
    362318         !------------------------------------------------------------------------------! 
    363319 
    364          !------------------------ 
    365          ! 6.1) lateral ice growth 
    366          !------------------------ 
     320         ! --- lateral ice growth --- ! 
    367321         ! If lateral ice growth gives an ice concentration gt 1, then 
    368322         ! we keep the excessive volume in memory and attribute it later to bottom accretion 
     
    407361         END DO 
    408362 
    409          !------------------------------------------------ 
    410          ! 6.2) bottom ice growth + ice enthalpy remapping 
    411          !------------------------------------------------ 
     363         ! --- bottom ice growth + ice enthalpy remapping --- ! 
    412364         DO jl = 1, jpl 
    413365 
     
    436388         END DO 
    437389 
    438          !----------------- 
    439          ! Update salinity 
    440          !----------------- 
     390         ! --- Update salinity --- ! 
    441391         DO jl = 1, jpl 
    442392            DO ji = 1, npti 
     
    445395         END DO 
    446396 
    447          !------------------------------------------------------------------------------! 
    448          ! 8) Change units for e_i 
    449          !------------------------------------------------------------------------------!     
     397         ! Change units for e_i 
    450398         DO jl = 1, jpl 
    451399            DO jk = 1, nlay_i 
     
    453401            END DO 
    454402         END DO 
    455          !------------------------------------------------------------------------------! 
    456          ! 7) Change 2D vectors to 1D vectors  
    457          !------------------------------------------------------------------------------! 
     403 
     404         ! Move 2D vectors to 1D vectors  
    458405         CALL tab_2d_3d( npti, nptidx(1:npti), a_i_2d (1:npti,1:jpl), a_i (:,:,:) ) 
    459406         CALL tab_2d_3d( npti, nptidx(1:npti), v_i_2d (1:npti,1:jpl), v_i (:,:,:) ) 
  • NEMO/trunk/src/ICE/icethd_ent.F90

    r9598 r9604  
    55   !!                       after vertical growth/melt 
    66   !!====================================================================== 
    7    !! History :  LIM  ! 2003-05 (M. Vancoppenolle) Original code in 1D 
    8    !!                 ! 2005-07 (M. Vancoppenolle) 3D version  
    9    !!                 ! 2006-11 (X. Fettweis) Vectorized  
    10    !!            3.0  ! 2008-03 (M. Vancoppenolle) Energy conservation and clean code 
    11    !!            3.4  ! 2011-02 (G. Madec) dynamical allocation 
    12    !!             -   ! 2014-05 (C. Rousset) complete rewriting 
     7   !! History :       !  2003-05  (M. Vancoppenolle) Original code in 1D 
     8   !!                 !  2005-07  (M. Vancoppenolle) 3D version  
     9   !!            3.6  !  2014-05  (C. Rousset)       New version 
     10   !!            4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
    1311   !!---------------------------------------------------------------------- 
    1412#if defined key_si3 
  • NEMO/trunk/src/ICE/icethd_pnd.F90

    r9598 r9604  
    22   !!====================================================================== 
    33   !!                     ***  MODULE  icethd_pnd   *** 
    4    !!   Melt ponds 
     4   !!   sea-ice: Melt ponds on top of sea ice 
    55   !!====================================================================== 
    6    !! history :       ! Original code by Daniela Flocco and Adrian Turner 
    7    !!            1.0  ! 2012    (O. Lecomte) Adaptation for scientific tests (NEMO3.1) 
    8    !!            2.0  ! 2017    (M. Vancoppenolle, O. Lecomte, C. Rousset) Implementation in NEMO4 
     6   !! history :       !  2012     (O. Lecomte)       Adaptation to LIM from Flocco and Turner 
     7   !!                 !  2017     (M. Vancoppenolle, O. Lecomte, C. Rousset) Implementation 
     8   !!            4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
    99   !!---------------------------------------------------------------------- 
    1010#if defined key_si3 
     
    7474      !! 
    7575      !! ** Method  :   Melt pond fraction and thickness are prescribed  
    76       !!              to non-zero values when t_su = 0C 
     76      !!                to non-zero values when t_su = 0C 
    7777      !! 
    7878      !! ** Tunable parameters : pond fraction (rn_apnd), pond depth (rn_hpnd) 
    7979      !!                 
    8080      !! ** Note   : Coupling with such melt ponds is only radiative 
    81       !!         Advection, ridging, rafting... are bypassed 
     81      !!             Advection, ridging, rafting... are bypassed 
    8282      !! 
    8383      !! ** References : Bush, G.W., and Trump, D.J. (2017) 
  • NEMO/trunk/src/ICE/icethd_sal.F90

    r9598 r9604  
    44   !!   sea-ice : computation of salinity variations in the ice 
    55   !!====================================================================== 
    6    !! History :   -   ! 2003-05 (M. Vancoppenolle) UCL-ASTR first coding for LIM3-1D 
    7    !!            3.0  ! 2005-12 (M. Vancoppenolle) adapted to the 3-D version 
    8    !!            4.0  ! 2011-02 (G. Madec) dynamical allocation 
     6   !! History :   -   !  2003-05 (M. Vancoppenolle) UCL-ASTR first coding for LIM3-1D 
     7   !!            3.0  !  2005-12 (M. Vancoppenolle) adapted to the 3-D version 
     8   !!            4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
    99   !!--------------------------------------------------------------------- 
    1010#if defined key_si3 
  • NEMO/trunk/src/ICE/icethd_zdf.F90

    r9598 r9604  
    22   !!====================================================================== 
    33   !!                       ***  MODULE icethd_zdf *** 
    4    !!   sea-ice: vertical heat diffusion in sea ice (computation of temperatures)  
     4   !!   sea-ice: master routine for vertical heat diffusion in sea ice  
    55   !!====================================================================== 
    6    !! History :  LIM  ! 02-2003 (M. Vancoppenolle) original 1D code 
    7    !!                 ! 06-2005 (M. Vancoppenolle) 3d version 
    8    !!                 ! 11-2006 (X Fettweis) Vectorization by Xavier 
    9    !!                 ! 04-2007 (M. Vancoppenolle) Energy conservation 
    10    !!            4.0  ! 2011-02 (G. Madec) dynamical allocation 
    11    !!             -   ! 2012-05 (C. Rousset) add penetration solar flux 
     6   !! History :  4.0  !  2018     (C. Rousset)      Original code SI3 
    127   !!---------------------------------------------------------------------- 
    138#if defined key_si3 
     
    1611   !!---------------------------------------------------------------------- 
    1712   !!  ice_thd_zdf      : select the appropriate routine for vertical heat diffusion calculation 
    18    !!  ice_thd_zdf_BL99 :  
    19    !!  ice_thd_zdf_init : 
     13   !!  ice_thd_zdf_BL99 : heat diffusion from Bitz and Lipscomb 1999  
     14   !!  ice_thd_zdf_init : initialization 
    2015   !!---------------------------------------------------------------------- 
    2116   USE dom_oce         ! ocean space and time domain 
  • NEMO/trunk/src/ICE/icethd_zdf_bl99.F90

    r9598 r9604  
    44   !!   sea-ice: vertical heat diffusion in sea ice (computation of temperatures)  
    55   !!====================================================================== 
    6    !! History :  LIM  ! 02-2003 (M. Vancoppenolle) original 1D code 
    7    !!                 ! 06-2005 (M. Vancoppenolle) 3d version 
    8    !!                 ! 11-2006 (X Fettweis) Vectorization by Xavier 
    9    !!                 ! 04-2007 (M. Vancoppenolle) Energy conservation 
    10    !!            4.0  ! 2011-02 (G. Madec) dynamical allocation 
    11    !!             -   ! 2012-05 (C. Rousset) add penetration solar flux 
     6   !! History :       !  2003-02  (M. Vancoppenolle) original 1D code LIM 
     7   !!                 !  2005-06  (M. Vancoppenolle) 3d version 
     8   !!            4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
    129   !!---------------------------------------------------------------------- 
    1310#if defined key_si3 
  • NEMO/trunk/src/ICE/iceupdate.F90

    r9598 r9604  
    44   !!  Sea-ice :   computation of the flux at the sea ice/ocean interface 
    55   !!====================================================================== 
    6    !! History :   -   ! 2006-07 (M. Vancoppelle)  LIM3 original code 
    7    !!            3.0  ! 2008-03 (C. Tallandier)  surface module 
    8    !!             -   ! 2008-04 (C. Tallandier)  split in 2 + new ice-ocean coupling 
    9    !!            3.3  ! 2010-05 (G. Madec) decrease ocean & ice reference salinities in the Baltic sea 
    10    !!                 !                  + simplification of the ice-ocean stress calculation 
    11    !!            3.4  ! 2011-02 (G. Madec) dynamical allocation 
    12    !!             -   ! 2012    (D. Iovino) salt flux change 
    13    !!             -   ! 2012-05 (C. Rousset) add penetration solar flux 
    14    !!            3.5  ! 2012-10 (A. Coward, G. Madec) salt fluxes ; ice+snow mass 
     6   !! History :  4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
    157   !!---------------------------------------------------------------------- 
    168#if defined key_si3 
  • NEMO/trunk/src/ICE/icevar.F90

    r9598 r9604  
    22   !!====================================================================== 
    33   !!                       ***  MODULE icevar *** 
    4    !!   sea-ice:     Different sets of ice model variables  
    5    !!                   how to switch from one to another 
     4   !!   sea-ice:  series of functions to transform or compute ice variables 
     5   !!====================================================================== 
     6   !! History :   -   !  2006-01  (M. Vancoppenolle) Original code 
     7   !!            4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
     8   !!---------------------------------------------------------------------- 
     9#if defined key_si3 
     10   !!---------------------------------------------------------------------- 
     11   !!   'key_si3'                                       SI3 sea-ice model 
     12   !!---------------------------------------------------------------------- 
    613   !! 
    714   !!                 There are three sets of variables 
     
    1219   !!                        - t_s (jpi,jpj,jpl) 
    1320   !!                        - e_i (jpi,jpj,nlay_i,jpl) 
     21   !!                        - e_s (jpi,jpj,nlay_s,jpl) 
    1422   !!                        - sv_i(jpi,jpj,jpl) 
    1523   !!                        - oa_i(jpi,jpj,jpl) 
     
    2937   !!                        - tm_i(jpi,jpj)  mean ice temperature 
    3038   !!                        - tm_s(jpi,jpj)  mean snw temperature 
    31    !!====================================================================== 
    32    !! History :   -   ! 2006-01 (M. Vancoppenolle) Original code 
    33    !!            3.4  ! 2011-02 (G. Madec) dynamical allocation 
    34    !!            3.5  ! 2012    (M. Vancoppenolle)  add ice_var_itd 
    35    !!            3.6  ! 2014-01 (C. Rousset) add ice_var_zapsmall, rewrite ice_var_itd 
    36    !!---------------------------------------------------------------------- 
    37 #if defined key_si3 
    38    !!---------------------------------------------------------------------- 
    39    !!   'key_si3'                                       SI3 sea-ice model 
    4039   !!---------------------------------------------------------------------- 
    4140   !!   ice_var_agg       : integrate variables over layers and categories 
  • NEMO/trunk/src/ICE/icewri.F90

    r9598 r9604  
    44   !!   sea-ice : output ice variables 
    55   !!====================================================================== 
     6   !! History :  4.0  !  2018     (many people)      SI3 [aka Sea Ice cube] 
     7   !!---------------------------------------------------------------------- 
    68#if defined key_si3 
    79   !!---------------------------------------------------------------------- 
     
    4244   SUBROUTINE ice_wri( kt ) 
    4345      !!------------------------------------------------------------------- 
    44       !!  This routine computes the average of some variables and write it 
    45       !!  on the ouput files. 
     46      !!  This routine ouputs some (most?) of the sea ice fields 
    4647      !!------------------------------------------------------------------- 
    4748      INTEGER, INTENT(in) ::   kt   ! time-step 
     
    6061      IF( ln_timing )   CALL timing_start('icewri') 
    6162 
    62       !---------------------------------------- 
    63       ! Brine volume, switches, missing values 
    64       !---------------------------------------- 
    65  
    66       CALL ice_var_bv      ! brine volume 
     63      ! brine volume 
     64      CALL ice_var_bv 
    6765 
    6866      ! tresholds for outputs 
Note: See TracChangeset for help on using the changeset viewer.