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 4634 for branches/2013/dev_r4028_CNRS_LIM3/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90 – NEMO

Ignore:
Timestamp:
2014-05-12T22:46:18+02:00 (10 years ago)
Author:
clem
Message:

major changes in heat budget

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r4028_CNRS_LIM3/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90

    r4337 r4634  
    3030   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3131   USE wrk_nemo         ! work arrays 
     32   USE cpl_oasis3, ONLY : lk_cpl 
    3233 
    3334   IMPLICIT NONE 
     
    3839   !! * Module variables 
    3940   REAL(wp) ::             & !!! ** init namelist (namiceini) ** 
    40       ttest    = 2.0  ,    &  ! threshold water temperature for initial sea ice 
    41       hninn    = 0.5  ,    &  ! initial snow thickness in the north 
    42       hnins    = 0.1  ,    &  ! initial snow thickness in the south 
    43       hginn    = 2.5  ,    &  ! initial ice thickness in the north 
    44       hgins    = 1.0  ,    &  ! initial ice thickness in the south 
    45       aginn    = 0.7  ,    &  ! initial leads area in the north 
    46       agins    = 0.7  ,    &  ! initial leads area in the south 
    47       sinn     = 6.301 ,   &  ! initial salinity  
    48       sins     = 6.301 
    49  
     41      thres_sst   = 2.0   ,    &  ! threshold water temperature for initial sea ice 
     42      hts_ini_n   = 0.5   ,    &  ! initial snow thickness in the north 
     43      hts_ini_s   = 0.1   ,    &  ! initial snow thickness in the south 
     44      hti_ini_n   = 2.5   ,    &  ! initial ice thickness in the north 
     45      hti_ini_s   = 1.0   ,    &  ! initial ice thickness in the south 
     46      ati_ini_n   = 0.7   ,    &  ! initial leads area in the north 
     47      ati_ini_s   = 0.7   ,    &  ! initial leads area in the south 
     48      smi_ini_n   = 6.301 ,    &  ! initial salinity  
     49      smi_ini_s   = 6.301 ,    &  ! initial salinity 
     50      tmi_ini_n   = 270.  ,    &  ! initial temperature 
     51      tmi_ini_s   = 270.          ! initial temperature 
     52 
     53   LOGICAL  ::  ln_limini = .TRUE. 
    5054   !!---------------------------------------------------------------------- 
    5155   !!   LIM 3.0,  UCL-LOCEAN-IPSL (2008) 
     
    9094      INTEGER    :: i_hemis, i_fill, jl0   
    9195      REAL(wp)   :: ztest_1, ztest_2, ztest_3, ztest_4, ztests, zsigma, zarg, zA, zV, zA_cons, zV_cons, zconv 
    92       REAL(wp), POINTER, DIMENSION(:)     :: zhm_i_ini, zat_i_ini, zvt_i_ini, zhm_s_ini, zsm_i_ini 
    93       REAL(wp), POINTER, DIMENSION(:,:)   :: zht_i_ini, za_i_ini, zv_i_ini 
    94       REAL(wp), POINTER, DIMENSION(:,:)   :: zidto    ! ice indicator 
     96      REAL(wp), POINTER, DIMENSION(:)     :: zht_i_ini, zat_i_ini, zvt_i_ini, zht_s_ini, zsm_i_ini, ztm_i_ini 
     97      REAL(wp), POINTER, DIMENSION(:,:)   :: zh_i_ini, za_i_ini, zv_i_ini 
     98      REAL(wp), POINTER, DIMENSION(:,:)   :: zswitch    ! ice indicator 
    9599      INTEGER,  POINTER, DIMENSION(:,:)   :: zhemis   ! hemispheric index 
    96100      !-------------------------------------------------------------------- 
    97101 
    98       CALL wrk_alloc( jpi, jpj, zidto ) 
     102      CALL wrk_alloc( jpi, jpj, zswitch ) 
    99103      CALL wrk_alloc( jpi, jpj, zhemis ) 
    100       CALL wrk_alloc( jpl,   2, zht_i_ini,  za_i_ini,  zv_i_ini ) 
    101       CALL wrk_alloc(   2,      zhm_i_ini, zat_i_ini, zvt_i_ini, zhm_s_ini, zsm_i_ini ) 
    102  
    103       epsi20   = 1.0e-20 
     104      CALL wrk_alloc( jpl,   2, zh_i_ini,  za_i_ini,  zv_i_ini ) 
     105      CALL wrk_alloc(   2,      zht_i_ini, zat_i_ini, zvt_i_ini, zht_s_ini, zsm_i_ini, ztm_i_ini ) 
     106 
     107      epsi20   = 1.e-20_wp 
     108 
    104109      IF(lwp) WRITE(numout,*) 
    105110      IF(lwp) WRITE(numout,*) 'lim_istate : Ice initialization ' 
     
    112117      CALL lim_istate_init     !  reading the initials parameters of the ice 
    113118 
    114 !!gm  in lim2  the initialisation if only done if required in the namelist : 
    115 !!gm      IF( .NOT. ln_limini ) THEN 
    116 !!gm  this should be added in lim3 namelist... 
     119# if defined key_coupled 
     120      albege(:,:)   = 0.8 * tms(:,:) 
     121# endif 
     122 
     123      ! surface temperature 
     124      DO jl = 1, jpl ! loop over categories 
     125         t_su  (:,:,jl) = rtt * tms(:,:) 
     126         tn_ice(:,:,jl) = rtt * tms(:,:) 
     127      END DO 
     128      ! Basal temperature is set to the freezing point of seawater in Kelvin 
     129      t_bo(:,:) = ( tfreez( tsn(:,:,1,jp_sal) ) + rt0 ) * tms(:,:)  
     130 
     131      IF( ln_limini ) THEN 
    117132 
    118133      !-------------------------------------------------------------------- 
    119134      ! 2) Basal temperature, ice mask and hemispheric index 
    120135      !-------------------------------------------------------------------- 
    121  
    122       ! Basal temperature is set to the freezing point of seawater in Celsius 
    123       t_bo(:,:) = tfreez( tsn(:,:,1,jp_sal) ) * tmask(:,:,1)       ! freezing/melting point of sea water [Celcius] 
    124  
    125       DO jj = 1, jpj                                       ! ice if sst <= t-freez + ttest 
     136      ! ice if sst <= t-freez + thres_sst 
     137      DO jj = 1, jpj                                        
    126138         DO ji = 1, jpi 
    127             IF( tsn(ji,jj,1,jp_tem)  - t_bo(ji,jj) >= ttest ) THEN   ;   zidto(ji,jj) = 0._wp      ! no ice 
    128             ELSE                                                     ;   zidto(ji,jj) = 1._wp      !    ice 
     139            IF( ( tsn(ji,jj,1,jp_tem)  - ( t_bo(ji,jj) - rt0 ) ) * tms(ji,jj) >= thres_sst ) THEN  ; zswitch(ji,jj) = 0._wp * tms(ji,jj)    ! no ice 
     140            ELSE                                                                                   ; zswitch(ji,jj) = 1._wp * tms(ji,jj)    !    ice 
    129141            ENDIF 
    130142         END DO 
    131143      END DO 
    132144 
    133       t_bo(:,:) = t_bo(:,:) + rt0                          ! conversion to Kelvin 
    134145 
    135146      ! Hemispheric index 
     
    153164      ! 3.1) Hemisphere-dependent arrays 
    154165      !----------------------------- 
    155       ! assign initial thickness, concentration, snow depth and salinity to 
    156       ! an hemisphere-dependent array 
    157       zhm_i_ini(1) = hginn ; zhm_i_ini(2) = hgins  ! ice thickness 
    158       zat_i_ini(1) = aginn ; zat_i_ini(2) = agins  ! ice concentration 
    159       zvt_i_ini(:) = zhm_i_ini(:) * zat_i_ini(:)   ! ice volume 
    160       zhm_s_ini(1) = hninn ; zhm_s_ini(2) = hnins  ! snow depth 
    161       zsm_i_ini(1) = sinn  ; zsm_i_ini(2) = sins   ! bulk ice salinity 
     166      ! assign initial thickness, concentration, snow depth and salinity to an hemisphere-dependent array 
     167      zht_i_ini(1) = hti_ini_n ; zht_i_ini(2) = hti_ini_s  ! ice thickness 
     168      zht_s_ini(1) = hts_ini_n ; zht_s_ini(2) = hts_ini_s  ! snow depth 
     169      zat_i_ini(1) = ati_ini_n ; zat_i_ini(2) = ati_ini_s  ! ice concentration 
     170      zsm_i_ini(1) = smi_ini_n ; zsm_i_ini(2) = smi_ini_s  ! bulk ice salinity 
     171      ztm_i_ini(1) = tmi_ini_n ; ztm_i_ini(2) = tmi_ini_s  ! temperature (ice and snow) 
     172 
     173      zvt_i_ini(:) = zht_i_ini(:) * zat_i_ini(:)   ! ice volume 
    162174 
    163175      !--------------------------------------------------------------------- 
     
    183195            ! *** 1 category to fill 
    184196            IF ( i_fill .EQ. 1 ) THEN 
    185                zht_i_ini(1,i_hemis)       = zhm_i_ini(i_hemis) 
    186                za_i_ini(1,i_hemis)        = zat_i_ini(i_hemis) 
    187                zht_i_ini(2:jpl,i_hemis)   = 0._wp 
    188                za_i_ini(2:jpl,i_hemis)    = 0._wp 
     197               zh_i_ini(1,i_hemis)       = zht_i_ini(i_hemis) 
     198               za_i_ini(1,i_hemis)       = zat_i_ini(i_hemis) 
     199               zh_i_ini(2:jpl,i_hemis)   = 0._wp 
     200               za_i_ini(2:jpl,i_hemis)   = 0._wp 
    189201            ELSE 
    190202 
    191             ! *** >1 categores to fill 
    192             !--- Ice thicknesses in the i_fill - 1 first categories 
     203               ! *** >1 categores to fill 
     204               !--- Ice thicknesses in the i_fill - 1 first categories 
    193205               DO jl = 1, i_fill - 1 
    194                   zht_i_ini(jl,i_hemis)    = 0.5 * ( hi_max(jl) + hi_max(jl-1) ) 
     206                  zh_i_ini(jl,i_hemis)    = 0.5 * ( hi_max(jl) + hi_max(jl-1) ) 
    195207               END DO 
    196  
    197             !--- jl0: most likely index where cc will be maximum 
     208                
     209               !--- jl0: most likely index where cc will be maximum 
    198210               DO jl = 1, jpl 
    199                   IF ( ( zhm_i_ini(i_hemis) .GT. hi_max(jl-1) ) .AND. & 
    200                        ( zhm_i_ini(i_hemis) .LE. hi_max(jl)   ) ) THEN 
     211                  IF ( ( zht_i_ini(i_hemis) .GT. hi_max(jl-1) ) .AND. & 
     212                     ( zht_i_ini(i_hemis) .LE. hi_max(jl)   ) ) THEN 
    201213                     jl0 = jl 
    202214                  ENDIF 
    203215               END DO 
    204216               jl0 = MIN(jl0, i_fill) 
    205  
    206             !--- Concentrations 
     217                
     218               !--- Concentrations 
    207219               za_i_ini(jl0,i_hemis)      = zat_i_ini(i_hemis) / SQRT(REAL(jpl)) 
    208220               DO jl = 1, i_fill - 1 
    209221                  IF ( jl .NE. jl0 ) THEN 
    210                      zsigma               = 0.5 * zhm_i_ini(i_hemis) 
    211                      zarg                 = ( zht_i_ini(jl,i_hemis) - zhm_i_ini(i_hemis) ) / zsigma 
     222                     zsigma               = 0.5 * zht_i_ini(i_hemis) 
     223                     zarg                 = ( zh_i_ini(jl,i_hemis) - zht_i_ini(i_hemis) ) / zsigma 
    212224                     za_i_ini(jl,i_hemis) = za_i_ini(jl0,i_hemis) * EXP(-zarg**2) 
    213225                  ENDIF 
    214                END DO  
    215  
     226               END DO 
     227                
    216228               zA = 0. ! sum of the areas in the jpl categories  
    217229               DO jl = 1, i_fill - 1 
     
    221233               IF ( i_fill .LT. jpl ) za_i_ini(i_fill+1:jpl, i_hemis) = 0._wp 
    222234          
    223             !--- Ice thickness in the last category 
     235               !--- Ice thickness in the last category 
    224236               zV = 0. ! sum of the volumes of the N-1 categories 
    225237               DO jl = 1, i_fill - 1 
    226                   zV = zV + za_i_ini(jl,i_hemis)*zht_i_ini(jl,i_hemis) 
     238                  zV = zV + za_i_ini(jl,i_hemis)*zh_i_ini(jl,i_hemis) 
    227239               END DO 
    228                zht_i_ini(i_fill,i_hemis) = ( zvt_i_ini(i_hemis) - zV ) / za_i_ini(i_fill,i_hemis)  
    229                IF ( i_fill .LT. jpl ) zht_i_ini(i_fill+1:jpl, i_hemis) = 0._wp 
    230  
    231             !--- volumes 
    232                zv_i_ini(:,i_hemis) = za_i_ini(:,i_hemis) * zht_i_ini(:,i_hemis) 
     240               zh_i_ini(i_fill,i_hemis) = ( zvt_i_ini(i_hemis) - zV ) / za_i_ini(i_fill,i_hemis)  
     241               IF ( i_fill .LT. jpl ) zh_i_ini(i_fill+1:jpl, i_hemis) = 0._wp 
     242 
     243               !--- volumes 
     244               zv_i_ini(:,i_hemis) = za_i_ini(:,i_hemis) * zh_i_ini(:,i_hemis) 
    233245               IF ( i_fill .LT. jpl ) zv_i_ini(i_fill+1:jpl, i_hemis) = 0._wp 
    234246 
     
    262274 
    263275            ! Test 3: thickness of the last category is in-bounds ? 
    264             IF ( zht_i_ini(i_fill, i_hemis) .GT. hi_max(i_fill-1) ) THEN 
     276            IF ( zh_i_ini(i_fill, i_hemis) .GT. hi_max(i_fill-1) ) THEN 
    265277               ztest_3 = 1 
    266278            ELSE 
    267279               ! this write is useful 
    268                IF(lwp) WRITE(numout,*) ' * TEST 3 THICKNESS OF THE LAST CATEGORY OUT OF BOUNDS *** zht_i_ini(i_fill,i_hemis) = ', & 
    269                zht_i_ini(i_fill,i_hemis), ' hi_max(jpl-1) = ', hi_max(i_fill-1) 
     280               IF(lwp) WRITE(numout,*) ' * TEST 3 THICKNESS OF THE LAST CATEGORY OUT OF BOUNDS *** zh_i_ini(i_fill,i_hemis) = ', & 
     281               zh_i_ini(i_fill,i_hemis), ' hi_max(jpl-1) = ', hi_max(i_fill-1) 
    270282               ztest_3 = 0 
    271283            ENDIF 
     
    291303         IF ( ztests .NE. 4 ) THEN 
    292304            WRITE(numout,*) 
    293             WRITE(numout,*), ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ' 
    294             WRITE(numout,*), ' !!!! RED ALERT                  !!! ' 
    295             WRITE(numout,*), ' !!!! BIIIIP BIIIP BIIIIP BIIIIP !!!' 
     305            WRITE(numout,*), ' !!!! ALERT                  !!! ' 
    296306            WRITE(numout,*), ' !!!! Something is wrong in the LIM3 initialization procedure ' 
    297             WRITE(numout,*), ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ' 
    298307            WRITE(numout,*) 
    299308            WRITE(numout,*), ' *** ztests is not equal to 4 ' 
    300309            WRITE(numout,*), ' *** ztest_i (i=1,4) = ', ztest_1, ztest_2, ztest_3, ztest_4 
    301310            WRITE(numout,*), ' zat_i_ini : ', zat_i_ini(i_hemis) 
    302             WRITE(numout,*), ' zhm_i_ini : ', zhm_i_ini(i_hemis) 
     311            WRITE(numout,*), ' zht_i_ini : ', zht_i_ini(i_hemis) 
    303312         ENDIF ! ztests .NE. 4 
    304313      ENDIF 
     
    314323         DO jj = 1, jpj 
    315324            DO ji = 1, jpi 
    316                a_i(ji,jj,jl)   = zidto(ji,jj) * za_i_ini (jl,zhemis(ji,jj))  ! concentration 
    317                ht_i(ji,jj,jl)  = zidto(ji,jj) * zht_i_ini(jl,zhemis(ji,jj))  ! ice thickness 
    318                ht_s(ji,jj,jl)  = ht_i(ji,jj,jl) * ( zhm_s_ini( zhemis(ji,jj) ) / zhm_i_ini( zhemis(ji,jj) ) )  ! snow depth 
    319                sm_i(ji,jj,jl)  = zidto(ji,jj) * zsm_i_ini(zhemis(ji,jj)) + ( 1._wp - zidto(ji,jj) ) * s_i_min ! salinity 
    320                o_i(ji,jj,jl)   = zidto(ji,jj) * 1._wp + ( 1._wp - zidto(ji,jj) ) ! age 
    321                t_su(ji,jj,jl)  = zidto(ji,jj) * 270.0 + ( 1._wp - zidto(ji,jj) ) * 270.0 ! surf temp 
     325               a_i(ji,jj,jl)   = zswitch(ji,jj) * za_i_ini (jl,zhemis(ji,jj))  ! concentration 
     326               ht_i(ji,jj,jl)  = zswitch(ji,jj) * zh_i_ini(jl,zhemis(ji,jj))  ! ice thickness 
     327               ht_s(ji,jj,jl)  = ht_i(ji,jj,jl) * ( zht_s_ini( zhemis(ji,jj) ) / zht_i_ini( zhemis(ji,jj) ) )  ! snow depth 
     328               sm_i(ji,jj,jl)  = zswitch(ji,jj) * zsm_i_ini(zhemis(ji,jj)) !+ ( 1._wp - zswitch(ji,jj) ) * s_i_min ! salinity 
     329               o_i(ji,jj,jl)   = zswitch(ji,jj) * 1._wp + ( 1._wp - zswitch(ji,jj) ) ! age 
     330               t_su(ji,jj,jl)  = zswitch(ji,jj) * ztm_i_ini(zhemis(ji,jj)) + ( 1._wp - zswitch(ji,jj) ) * rtt ! surf temp 
    322331 
    323332               ! This case below should not be used if (ht_s/ht_i) is ok in namelist 
     
    343352            DO jj = 1, jpj 
    344353               DO ji = 1, jpi 
    345                    t_s(ji,jj,jk,jl) = zidto(ji,jj) * 270.0 + ( 1._wp - zidto(ji,jj) ) * rtt 
     354                   t_s(ji,jj,jk,jl) = zswitch(ji,jj) * ztm_i_ini(zhemis(ji,jj)) + ( 1._wp - zswitch(ji,jj) ) * rtt 
    346355                   ! Snow energy of melting 
    347                    e_s(ji,jj,jk,jl) = zidto(ji,jj) * rhosn * ( cpic * ( rtt - t_s(ji,jj,jk,jl) ) + lfus ) 
     356                   e_s(ji,jj,jk,jl) = zswitch(ji,jj) * rhosn * ( cpic * ( rtt - t_s(ji,jj,jk,jl) ) + lfus ) 
    348357                   ! Change dimensions 
    349358                   e_s(ji,jj,jk,jl) = e_s(ji,jj,jk,jl) / unit_fac 
    350                    ! Multiply by volume, so that heat content in 10^9 Joules 
     359                   ! Multiply by volume, so that heat content in Joules 
    351360                   e_s(ji,jj,jk,jl) = e_s(ji,jj,jk,jl) * area(ji,jj) * v_s(ji,jj,jl) / nlay_s 
    352361               END DO ! ji 
     
    360369            DO jj = 1, jpj 
    361370               DO ji = 1, jpi 
    362                    t_i(ji,jj,jk,jl) = zidto(ji,jj) * 270.00 + ( 1._wp - zidto(ji,jj) ) * rtt  
    363                    s_i(ji,jj,jk,jl) = zidto(ji,jj) * zsm_i_ini(zhemis(ji,jj)) + ( 1._wp - zidto(ji,jj) ) * s_i_min 
     371                   t_i(ji,jj,jk,jl) = zswitch(ji,jj) * ztm_i_ini(zhemis(ji,jj)) + ( 1._wp - zswitch(ji,jj) ) * rtt  
     372                   s_i(ji,jj,jk,jl) = zswitch(ji,jj) * zsm_i_ini(zhemis(ji,jj)) !+ ( 1._wp - zswitch(ji,jj) ) * s_i_min 
    364373                   ztmelts          = - tmut * s_i(ji,jj,jk,jl) + rtt !Melting temperature in K 
    365374 
    366375                   ! heat content per unit volume 
    367                    e_i(ji,jj,jk,jl) = zidto(ji,jj) * rhoic * (   cpic    * ( ztmelts - t_i(ji,jj,jk,jl) ) & 
     376                   e_i(ji,jj,jk,jl) = zswitch(ji,jj) * rhoic * (   cpic    * ( ztmelts - t_i(ji,jj,jk,jl) ) & 
    368377                      +   lfus    * ( 1._wp - (ztmelts-rtt) / MIN((t_i(ji,jj,jk,jl)-rtt),-epsi20) ) & 
    369378                      -   rcp     * ( ztmelts - rtt ) ) 
     
    372381                   e_i(ji,jj,jk,jl) = e_i(ji,jj,jk,jl) / unit_fac  
    373382 
    374                    ! Mutliply by ice volume, and divide by number of layers  
    375                    ! to get heat content in 10^9 J 
     383                   ! Mutliply by ice volume, and divide by number of layers to get heat content in J 
    376384                   e_i(ji,jj,jk,jl) = e_i(ji,jj,jk,jl) * area(ji,jj) * v_i(ji,jj,jl) / nlay_i 
    377385               END DO ! ji 
     
    380388      END DO ! jk 
    381389 
    382       !-------------------------------------------------------------------- 
    383       ! 4) Global ice variables for output diagnostics                    |  
    384       !-------------------------------------------------------------------- 
    385       fsbbq (:,:)     = 0._wp 
    386       u_ice (:,:)     = 0._wp 
    387       v_ice (:,:)     = 0._wp 
    388       stress1_i(:,:)  = 0._wp 
    389       stress2_i(:,:)  = 0._wp 
    390       stress12_i(:,:) = 0._wp 
    391  
    392 # if defined key_coupled 
    393       albege(:,:)   = 0.8 * tms(:,:) 
    394 # endif 
    395  
    396       !-------------------------------------------------------------------- 
    397       ! 5) Moments for advection 
    398       !-------------------------------------------------------------------- 
    399  
    400       sxopw (:,:) = 0._wp  
    401       syopw (:,:) = 0._wp  
    402       sxxopw(:,:) = 0._wp  
    403       syyopw(:,:) = 0._wp  
    404       sxyopw(:,:) = 0._wp 
    405  
    406       sxice (:,:,:)  = 0._wp   ;   sxsn (:,:,:)  = 0._wp   ;   sxa  (:,:,:)  = 0._wp 
    407       syice (:,:,:)  = 0._wp   ;   sysn (:,:,:)  = 0._wp   ;   sya  (:,:,:)  = 0._wp 
    408       sxxice(:,:,:)  = 0._wp   ;   sxxsn(:,:,:)  = 0._wp   ;   sxxa (:,:,:)  = 0._wp 
    409       syyice(:,:,:)  = 0._wp   ;   syysn(:,:,:)  = 0._wp   ;   syya (:,:,:)  = 0._wp 
    410       sxyice(:,:,:)  = 0._wp   ;   sxysn(:,:,:)  = 0._wp   ;   sxya (:,:,:)  = 0._wp 
    411  
    412       sxc0  (:,:,:)  = 0._wp   ;   sxe  (:,:,:,:)= 0._wp    
    413       syc0  (:,:,:)  = 0._wp   ;   sye  (:,:,:,:)= 0._wp    
    414       sxxc0 (:,:,:)  = 0._wp   ;   sxxe (:,:,:,:)= 0._wp    
    415       syyc0 (:,:,:)  = 0._wp   ;   syye (:,:,:,:)= 0._wp    
    416       sxyc0 (:,:,:)  = 0._wp   ;   sxye (:,:,:,:)= 0._wp    
    417  
    418       sxsal  (:,:,:)  = 0._wp 
    419       sysal  (:,:,:)  = 0._wp 
    420       sxxsal (:,:,:)  = 0._wp 
    421       syysal (:,:,:)  = 0._wp 
    422       sxysal (:,:,:)  = 0._wp 
    423  
    424       sxage  (:,:,:)  = 0._wp 
    425       syage  (:,:,:)  = 0._wp 
    426       sxxage (:,:,:)  = 0._wp 
    427       syyage (:,:,:)  = 0._wp 
    428       sxyage (:,:,:)  = 0._wp 
    429  
    430       !-------------------------------------------------------------------- 
    431       ! 6) Lateral boundary conditions                                    |  
    432       !-------------------------------------------------------------------- 
    433  
     390      tn_ice (:,:,:) = t_su (:,:,:) 
     391 
     392      !-------------------------------------------------------------------- 
     393      ! 4) Lateral boundary conditions                                    |  
     394      !-------------------------------------------------------------------- 
    434395      DO jl = 1, jpl 
    435396 
     
    445406         CALL lbc_lnk( o_i(:,:,jl)  , 'T', 1. ) 
    446407         CALL lbc_lnk( t_su(:,:,jl) , 'T', 1. ) 
     408         CALL lbc_lnk( tn_ice(:,:,jl) , 'T', 1. ) 
    447409         DO jk = 1, nlay_s 
    448410            CALL lbc_lnk(t_s(:,:,jk,jl), 'T', 1. ) 
     
    454416         END DO 
    455417         ! 
    456          a_i(:,:,jl) = tms(:,:) * a_i(:,:,jl) 
     418!         a_i(:,:,jl) = tms(:,:) * a_i(:,:,jl) 
    457419      END DO 
     420 
     421      ELSE  
     422         ! if ln_limini=false 
     423         a_i  (:,:,:) = 0._wp 
     424         v_i  (:,:,:) = 0._wp 
     425         v_s  (:,:,:) = 0._wp 
     426         smv_i(:,:,:) = 0._wp 
     427         oa_i (:,:,:) = 0._wp 
     428         ht_i (:,:,:) = 0._wp 
     429         ht_s (:,:,:) = 0._wp 
     430         sm_i (:,:,:) = 0._wp 
     431         o_i  (:,:,:) = 0._wp 
     432 
     433         e_i(:,:,:,:) = 0._wp 
     434         e_s(:,:,:,:) = 0._wp 
     435 
     436         DO jl = 1, jpl 
     437            DO jk = 1, nlay_i 
     438               t_i(:,:,jk,jl) = rtt * tms(:,:) 
     439            END DO 
     440            DO jk = 1, nlay_s 
     441               t_s(:,:,jk,jl) = rtt * tms(:,:) 
     442            END DO 
     443         END DO 
     444       
     445      ENDIF ! ln_limini 
    458446       
    459447      at_i (:,:) = 0.0_wp 
     
    461449         at_i (:,:) = at_i (:,:) + a_i (:,:,jl) 
    462450      END DO 
    463  
    464451      CALL lbc_lnk( at_i , 'T', 1. ) 
    465       at_i(:,:) = tms(:,:) * at_i(:,:)                       ! put 0 over land 
     452!      at_i(:,:) = tms(:,:) * at_i(:,:) 
    466453      ! 
    467       CALL lbc_lnk( fsbbq  , 'T', 1. ) 
    468       ! 
    469       !-------------------------------------------------------------------- 
    470       ! 6) ????                                                           |  
    471       !-------------------------------------------------------------------- 
    472       tn_ice (:,:,:) = t_su (:,:,:) 
    473  
    474       CALL wrk_dealloc( jpi, jpj, zidto ) 
     454      !-------------------------------------------------------------------- 
     455      ! 5) Global ice variables for output diagnostics                    |  
     456      !-------------------------------------------------------------------- 
     457      u_ice (:,:)     = 0._wp 
     458      v_ice (:,:)     = 0._wp 
     459      stress1_i(:,:)  = 0._wp 
     460      stress2_i(:,:)  = 0._wp 
     461      stress12_i(:,:) = 0._wp 
     462 
     463      !-------------------------------------------------------------------- 
     464      ! 6) Moments for advection 
     465      !-------------------------------------------------------------------- 
     466 
     467      sxopw (:,:) = 0._wp  
     468      syopw (:,:) = 0._wp  
     469      sxxopw(:,:) = 0._wp  
     470      syyopw(:,:) = 0._wp  
     471      sxyopw(:,:) = 0._wp 
     472 
     473      sxice (:,:,:)  = 0._wp   ;   sxsn (:,:,:)  = 0._wp   ;   sxa  (:,:,:)  = 0._wp 
     474      syice (:,:,:)  = 0._wp   ;   sysn (:,:,:)  = 0._wp   ;   sya  (:,:,:)  = 0._wp 
     475      sxxice(:,:,:)  = 0._wp   ;   sxxsn(:,:,:)  = 0._wp   ;   sxxa (:,:,:)  = 0._wp 
     476      syyice(:,:,:)  = 0._wp   ;   syysn(:,:,:)  = 0._wp   ;   syya (:,:,:)  = 0._wp 
     477      sxyice(:,:,:)  = 0._wp   ;   sxysn(:,:,:)  = 0._wp   ;   sxya (:,:,:)  = 0._wp 
     478 
     479      sxc0  (:,:,:)  = 0._wp   ;   sxe  (:,:,:,:)= 0._wp    
     480      syc0  (:,:,:)  = 0._wp   ;   sye  (:,:,:,:)= 0._wp    
     481      sxxc0 (:,:,:)  = 0._wp   ;   sxxe (:,:,:,:)= 0._wp    
     482      syyc0 (:,:,:)  = 0._wp   ;   syye (:,:,:,:)= 0._wp    
     483      sxyc0 (:,:,:)  = 0._wp   ;   sxye (:,:,:,:)= 0._wp    
     484 
     485      sxsal  (:,:,:)  = 0._wp 
     486      sysal  (:,:,:)  = 0._wp 
     487      sxxsal (:,:,:)  = 0._wp 
     488      syysal (:,:,:)  = 0._wp 
     489      sxysal (:,:,:)  = 0._wp 
     490 
     491      sxage  (:,:,:)  = 0._wp 
     492      syage  (:,:,:)  = 0._wp 
     493      sxxage (:,:,:)  = 0._wp 
     494      syyage (:,:,:)  = 0._wp 
     495      sxyage (:,:,:)  = 0._wp 
     496 
     497 
     498      CALL wrk_dealloc( jpi, jpj, zswitch ) 
    475499      CALL wrk_dealloc( jpi, jpj, zhemis ) 
    476       CALL wrk_dealloc( jpl,   2, zht_i_ini,  za_i_ini,  zv_i_ini ) 
    477       CALL wrk_dealloc(   2,      zhm_i_ini, zat_i_ini, zvt_i_ini, zhm_s_ini, zsm_i_ini ) 
     500      CALL wrk_dealloc( jpl,   2, zh_i_ini,  za_i_ini,  zv_i_ini ) 
     501      CALL wrk_dealloc(   2,      zht_i_ini, zat_i_ini, zvt_i_ini, zht_s_ini, zsm_i_ini, ztm_i_ini ) 
    478502 
    479503   END SUBROUTINE lim_istate 
     
    495519      !!  8.5  ! 07-11 (M. Vancoppenolle) rewritten initialization 
    496520      !!----------------------------------------------------------------------------- 
    497       NAMELIST/namiceini/ ttest, hninn, hnins, hginn, hgins, aginn, agins, sinn, sins 
     521      NAMELIST/namiceini/ ln_limini, thres_sst, hts_ini_n, hts_ini_s, hti_ini_n, hti_ini_s,  & 
     522         &                                      ati_ini_n, ati_ini_s, smi_ini_n, smi_ini_s, tmi_ini_n, tmi_ini_s 
    498523      !!----------------------------------------------------------------------------- 
    499524 
     
    508533         WRITE(numout,*) 'lim_istate_init : ice parameters inititialisation ' 
    509534         WRITE(numout,*) '~~~~~~~~~~~~~~~' 
    510          WRITE(numout,*) '   threshold water temp. for initial sea-ice    ttest      = ', ttest 
    511          WRITE(numout,*) '   initial snow thickness in the north          hninn      = ', hninn 
    512          WRITE(numout,*) '   initial snow thickness in the south          hnins      = ', hnins  
    513          WRITE(numout,*) '   initial ice thickness  in the north          hginn      = ', hginn 
    514          WRITE(numout,*) '   initial ice thickness  in the south          hgins      = ', hgins 
    515          WRITE(numout,*) '   initial ice concentr.  in the north          aginn      = ', aginn 
    516          WRITE(numout,*) '   initial ice concentr.  in the north          agins      = ', agins 
    517          WRITE(numout,*) '   initial  ice salinity  in the north          sinn       = ', sinn 
    518          WRITE(numout,*) '   initial  ice salinity  in the south          sins       = ', sins 
     535         WRITE(numout,*) '   initialization with ice (T) or not (F)       ln_limini   = ', ln_limini 
     536         WRITE(numout,*) '   threshold water temp. for initial sea-ice    thres_sst  = ', thres_sst 
     537         WRITE(numout,*) '   initial snow thickness in the north          hts_ini_n  = ', hts_ini_n 
     538         WRITE(numout,*) '   initial snow thickness in the south          hts_ini_s  = ', hts_ini_s  
     539         WRITE(numout,*) '   initial ice thickness  in the north          hti_ini_n  = ', hti_ini_n 
     540         WRITE(numout,*) '   initial ice thickness  in the south          hti_ini_s  = ', hti_ini_s 
     541         WRITE(numout,*) '   initial ice concentr.  in the north          ati_ini_n  = ', ati_ini_n 
     542         WRITE(numout,*) '   initial ice concentr.  in the north          ati_ini_s  = ', ati_ini_s 
     543         WRITE(numout,*) '   initial  ice salinity  in the north          smi_ini_n  = ', smi_ini_n 
     544         WRITE(numout,*) '   initial  ice salinity  in the south          smi_ini_s  = ', smi_ini_s 
     545         WRITE(numout,*) '   initial  ice/snw temp  in the north          tmi_ini_n  = ', tmi_ini_n 
     546         WRITE(numout,*) '   initial  ice/snw temp  in the south          tmi_ini_s  = ', tmi_ini_s 
    519547      ENDIF 
    520548 
Note: See TracChangeset for help on using the changeset viewer.