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 5047 – NEMO

Changeset 5047


Ignore:
Timestamp:
2015-01-29T14:13:14+01:00 (9 years ago)
Author:
clem
Message:

LIM3 cleaning (1): namelist

Location:
branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/ice.F90

    r4990 r5047  
    167167   !                                     !!** ice-dynamic namelist (namicedyn) ** 
    168168   INTEGER , PUBLIC ::   nevp             !: number of iterations for subcycling 
    169    REAL(wp), PUBLIC ::   epsd             !: tolerance parameter for dynamic 
    170    REAL(wp), PUBLIC ::   om               !: relaxation constant 
    171169   REAL(wp), PUBLIC ::   cw               !: drag coefficient for oceanic stress 
    172170   REAL(wp), PUBLIC ::   pstar            !: determines ice strength (N/M), Hibler JPO79 
     
    175173   REAL(wp), PUBLIC ::   ecc              !: eccentricity of the elliptical yield curve 
    176174   REAL(wp), PUBLIC ::   ahi0             !: sea-ice hor. eddy diffusivity coeff. (m2/s) 
    177    REAL(wp), PUBLIC ::   telast           !: timescale for elastic waves (s) 
    178175   REAL(wp), PUBLIC ::   relast           !: ratio => telast/rdt_ice (1/3 or 1/9 depending on nb of subcycling nevp)  
    179    REAL(wp), PUBLIC ::   alphaevp         !: coeficient of the internal stresses  
    180176   REAL(wp), PUBLIC ::   hminrhg          !: ice volume (a*h, in m) below which ice velocity is set to ocean velocity 
    181177 
     
    183179   REAL(wp), PUBLIC ::   s_i_max          !: maximum ice salinity [PSU] 
    184180   REAL(wp), PUBLIC ::   s_i_min          !: minimum ice salinity [PSU] 
    185    REAL(wp), PUBLIC ::   s_i_0            !: 1st sal. value for the computation of sal .prof. [PSU] 
    186    REAL(wp), PUBLIC ::   s_i_1            !: 2nd sal. value for the computation of sal .prof. [PSU] 
    187181   REAL(wp), PUBLIC ::   sal_G            !: restoring salinity for gravity drainage [PSU] 
    188182   REAL(wp), PUBLIC ::   sal_F            !: restoring salinity for flushing [PSU] 
     
    389383   LOGICAL               , PUBLIC ::   ln_limdyn       !: flag for ice dynamics (T) or not (F) 
    390384   LOGICAL               , PUBLIC ::   ln_nicep        !: flag for sea-ice points output (T) or not (F) 
    391    REAL(wp)              , PUBLIC ::   cai             !: atmospheric drag over sea ice 
    392    REAL(wp)              , PUBLIC ::   cao             !: atmospheric drag over ocean 
    393385   REAL(wp)              , PUBLIC ::   amax            !: maximum ice concentration 
    394386   ! 
  • branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/iceini.F90

    r4873 r5047  
    131131      !! ** input   :   Namelist namicerun 
    132132      !!------------------------------------------------------------------- 
    133       NAMELIST/namicerun/ cn_icerst_in, cn_icerst_out, ln_limdyn, amax, cai, cao, ln_nicep, ln_limdiahsb, ln_limdiaout 
     133      NAMELIST/namicerun/ cn_icerst_in, cn_icerst_out, ln_limdyn, amax, ln_nicep, ln_limdiahsb, ln_limdiaout 
    134134      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    135135      !!------------------------------------------------------------------- 
     
    155155         WRITE(numout,*) '   switch for ice dynamics (1) or not (0)      ln_limdyn   = ', ln_limdyn 
    156156         WRITE(numout,*) '   maximum ice concentration                               = ', amax  
    157          WRITE(numout,*) '   atmospheric drag over sea ice                           = ', cai 
    158          WRITE(numout,*) '   atmospheric drag over ocean                             = ', cao 
    159157         WRITE(numout,*) '   Several ice points in the ice or not in ocean.output    = ', ln_nicep 
    160158         WRITE(numout,*) '   Diagnose heat/salt budget or not          ln_limdiahsb  = ', ln_limdiahsb 
  • branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limdyn.F90

    r4990 r5047  
    241241      !!------------------------------------------------------------------- 
    242242      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    243       NAMELIST/namicedyn/ epsd, om, cw, pstar,   & 
     243      NAMELIST/namicedyn/ cw, pstar,   & 
    244244         &                c_rhg, creepl, ecc, ahi0,     & 
    245          &                nevp, relast, alphaevp, hminrhg 
     245         &                nevp, relast, hminrhg 
    246246      !!------------------------------------------------------------------- 
    247247 
     
    259259         WRITE(numout,*) 'lim_dyn_init : ice parameters for ice dynamics ' 
    260260         WRITE(numout,*) '~~~~~~~~~~~~' 
    261          WRITE(numout,*) '   tolerance parameter                              epsd   = ', epsd 
    262          WRITE(numout,*) '   relaxation constant                              om     = ', om 
    263261         WRITE(numout,*) '   drag coefficient for oceanic stress              cw     = ', cw 
    264262         WRITE(numout,*) '   first bulk-rheology parameter                    pstar  = ', pstar 
     
    269267         WRITE(numout,*) '   number of iterations for subcycling              nevp   = ', nevp 
    270268         WRITE(numout,*) '   ratio of elastic timescale over ice time step    relast = ', relast 
    271          WRITE(numout,*) '   coefficient for the solution of int. stresses  alphaevp = ', alphaevp 
    272269         WRITE(numout,*) '   min ice thickness for rheology calculations     hminrhg = ', hminrhg 
    273270      ENDIF 
     
    275272      usecc2 = 1._wp / ( ecc * ecc ) 
    276273      rhoco  = rau0  * cw 
    277  
    278       ! elastic damping 
    279       telast = relast * rdt_ice 
    280274 
    281275      !  Diffusion coefficients. 
  • branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limhdf.F90

    r4990 r5047  
    5454      REAL(wp), DIMENSION(jpi,jpj), INTENT( inout ) ::   ptab    ! Field on which the diffusion is applied 
    5555      ! 
    56       INTEGER  ::  ji, jj                   ! dummy loop indices 
    57       INTEGER  ::  its, iter, ierr          ! local integers 
    58       REAL(wp) ::   zalfa, zrlxint, zconv   ! local scalars 
     56      INTEGER                           ::  ji, jj                   ! dummy loop indices 
     57      INTEGER                           ::  its, iter, ierr          ! local integers 
     58      REAL(wp)                          ::   zalfa, zrlxint, zconv   ! local scalars 
    5959      REAL(wp), POINTER, DIMENSION(:,:) ::   zrlx, zflu, zflv, zdiv0, zdiv, ztab0 
    60       CHARACTER(lc) ::   charout   ! local character 
     60      CHARACTER(lc)                     ::   charout                 ! local character 
     61      REAL(wp), PARAMETER               :: zrelax = 0.5_wp           ! relaxation constant for iterative procedure 
    6162      !!------------------------------------------------------------------- 
    6263       
     
    117118                  &                      + ( 1.0 - zalfa ) *   zdiv0(ji,jj) )  )                             &  
    118119                  &    / ( 1.0 + zalfa * rdt_ice * efact(ji,jj) ) 
    119                zrlx(ji,jj) = ptab(ji,jj) + om * ( zrlxint - ptab(ji,jj) ) 
     120               zrlx(ji,jj) = ptab(ji,jj) + zrelax * ( zrlxint - ptab(ji,jj) ) 
    120121            END DO 
    121122         END DO 
  • branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90

    r4990 r5047  
    102102      !!                 and charge ellipse. 
    103103      !!                 The user should make sure that the parameters 
    104       !!                 nevp, telast and creepl maintain stress state 
     104      !!                 nevp, elastic time scale and creepl maintain stress state 
    105105      !!                 on the charge ellipse for plastic flow 
    106106      !!                 e.g. in the Canadian Archipelago 
     
    108108      !! References : Hunke and Dukowicz, JPO97 
    109109      !!              Bouillon et al., Ocean Modelling 2009 
    110       !!              Vancoppenolle et al., Ocean Modelling 2008 
    111110      !!------------------------------------------------------------------- 
    112111      INTEGER, INTENT(in) ::   k_j1    ! southern j-index for ice computation 
     
    152151                                                              !   ocean surface (ssh_m) if ice is not embedded 
    153152                                                              !   ice top surface if ice is embedded    
     153 
     154      REAL(wp), PARAMETER               ::   zepsi = 1.0e-20_wp ! tolerance parameter 
    154155      !!------------------------------------------------------------------- 
    155156 
     
    200201#endif 
    201202            ! tmi = 1 where there is ice or on land 
    202             tmi(ji,jj)    = 1._wp - ( 1._wp - MAX( 0._wp , SIGN ( 1._wp , vt_i(ji,jj) - epsd ) ) ) * tms(ji,jj) 
     203            tmi(ji,jj)    = 1._wp - ( 1._wp - MAX( 0._wp , SIGN ( 1._wp , vt_i(ji,jj) - zepsi ) ) ) * tms(ji,jj) 
    203204         END DO 
    204205      END DO 
     
    218219               &                zpresh(ji+1,jj)   * wght(ji+1,jj+1,2,1) + &  
    219220               &                zpresh(ji,jj)     * wght(ji+1,jj+1,1,1)   & 
    220                &             ) / MAX( zstms, epsd ) 
     221               &             ) / MAX( zstms, zepsi ) 
    221222         END DO 
    222223      END DO 
     
    270271 
    271272            ! Leads area. 
    272             zfrld1(ji,jj) = ( zt12 * ( 1.0 - at_i(ji,jj) ) + zt11 * ( 1.0 - at_i(ji+1,jj) ) ) / ( zt11 + zt12 + epsd ) 
    273             zfrld2(ji,jj) = ( zt22 * ( 1.0 - at_i(ji,jj) ) + zt21 * ( 1.0 - at_i(ji,jj+1) ) ) / ( zt21 + zt22 + epsd ) 
     273            zfrld1(ji,jj) = ( zt12 * ( 1.0 - at_i(ji,jj) ) + zt11 * ( 1.0 - at_i(ji+1,jj) ) ) / ( zt11 + zt12 + zepsi ) 
     274            zfrld2(ji,jj) = ( zt22 * ( 1.0 - at_i(ji,jj) ) + zt21 * ( 1.0 - at_i(ji,jj+1) ) ) / ( zt21 + zt22 + zepsi ) 
    274275 
    275276            ! Mass, coriolis coeff. and currents 
    276             zmass1(ji,jj) = ( zt12*zc1 + zt11*zc2 ) / (zt11+zt12+epsd) 
    277             zmass2(ji,jj) = ( zt22*zc1 + zt21*zc3 ) / (zt21+zt22+epsd) 
     277            zmass1(ji,jj) = ( zt12*zc1 + zt11*zc2 ) / (zt11+zt12+zepsi) 
     278            zmass2(ji,jj) = ( zt22*zc1 + zt21*zc3 ) / (zt21+zt22+zepsi) 
    278279            zcorl1(ji,jj) = zmass1(ji,jj) * ( e1t(ji+1,jj)*fcor(ji,jj) + e1t(ji,jj)*fcor(ji+1,jj) )   & 
    279                &                          / ( e1t(ji,jj) + e1t(ji+1,jj) + epsd ) 
     280               &                          / ( e1t(ji,jj) + e1t(ji+1,jj) + zepsi ) 
    280281            zcorl2(ji,jj) = zmass2(ji,jj) * ( e2t(ji,jj+1)*fcor(ji,jj) + e2t(ji,jj)*fcor(ji,jj+1) )   & 
    281                &                          / ( e2t(ji,jj+1) + e2t(ji,jj) + epsd ) 
     282               &                          / ( e2t(ji,jj+1) + e2t(ji,jj) + zepsi ) 
    282283            ! 
    283284            u_oce1(ji,jj)  = u_oce(ji,jj) 
     
    319320      ! Time step for subcycling 
    320321      dtevp  = rdt_ice / nevp 
     322#if defined key_lim3 
     323      dtotel = dtevp / ( 2._wp * relast * rdt_ice ) 
     324#else 
    321325      dtotel = dtevp / ( 2._wp * telast ) 
    322  
     326#endif 
    323327      !-ecc2: square of yield ellipse eccenticrity (reminder: must become a namelist parameter) 
    324328      ecc2 = ecc * ecc 
     
    504508                  zcca         = z0+za 
    505509                  zccb         = zcorl1(ji,jj) 
    506                   u_ice(ji,jj) = (zr+zccb*zv_ice1)/(zcca+epsd)*zmask  
     510                  u_ice(ji,jj) = (zr+zccb*zv_ice1)/(zcca+zepsi)*zmask  
    507511 
    508512               END DO 
     
    534538                  zcca         = z0+za 
    535539                  zccb         = zcorl2(ji,jj) 
    536                   v_ice(ji,jj) = (zr-zccb*zu_ice2)/(zcca+epsd)*zmask 
     540                  v_ice(ji,jj) = (zr-zccb*zu_ice2)/(zcca+zepsi)*zmask 
    537541 
    538542               END DO 
     
    565569                  zcca         = z0+za 
    566570                  zccb         = zcorl2(ji,jj) 
    567                   v_ice(ji,jj) = (zr-zccb*zu_ice2)/(zcca+epsd)*zmask 
     571                  v_ice(ji,jj) = (zr-zccb*zu_ice2)/(zcca+zepsi)*zmask 
    568572 
    569573               END DO 
     
    594598                  zcca         = z0+za 
    595599                  zccb         = zcorl1(ji,jj) 
    596                   u_ice(ji,jj) = (zr+zccb*zv_ice1)/(zcca+epsd)*zmask  
     600                  u_ice(ji,jj) = (zr+zccb*zv_ice1)/(zcca+zepsi)*zmask  
    597601               END DO ! ji 
    598602            END DO ! jj 
  • branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90

    r4990 r5047  
    563563      !!------------------------------------------------------------------- 
    564564      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    565       NAMELIST/namicethd/ hmelt , hiccrit, fraz_swi, maxfrazb, vfrazb, Cfrazb,   & 
    566          &                hiclim, hnzst, parsub, betas,                          &  
     565      NAMELIST/namicethd/ hiccrit, fraz_swi, maxfrazb, vfrazb, Cfrazb,   & 
     566         &                hiclim, parsub, betas,                          &  
    567567         &                kappa_i, nconv_i_thd, maxer_i_thd, thcon_i_swi 
    568568      !!------------------------------------------------------------------- 
     
    588588         WRITE(numout,*) 
    589589         WRITE(numout,*)'   Namelist of ice parameters for ice thermodynamic computation ' 
    590          WRITE(numout,*)'      maximum melting at the bottom                           hmelt        = ', hmelt 
    591590         WRITE(numout,*)'      ice thick. for lateral accretion                        hiccrit      = ', hiccrit 
    592591         WRITE(numout,*)'      Frazil ice thickness as a function of wind or not       fraz_swi     = ', fraz_swi 
     
    596595         WRITE(numout,*)'      minimum ice thickness                                   hiclim       = ', hiclim  
    597596         WRITE(numout,*)'      numerical carac. of the scheme for diffusion in ice ' 
    598          WRITE(numout,*)'      thickness of the surf. layer in temp. computation       hnzst        = ', hnzst 
    599597         WRITE(numout,*)'      switch for snow sublimation  (=1) or not (=0)           parsub       = ', parsub   
    600598         WRITE(numout,*)'      coefficient for ice-lead partition of snowfall          betas        = ', betas 
  • branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90

    r4990 r5047  
    7070 
    7171      REAL(wp) ::   ztmelts             ! local scalar 
    72       REAL(wp) ::   zdh, zfdum  ! 
     72      REAL(wp) ::   zfdum        
    7373      REAL(wp) ::   zfracs       ! fractionation coefficient for bottom salt entrapment 
    7474      REAL(wp) ::   zcoeff       ! dummy argument for snowfall partitioning over ice and leads 
     
    9191      REAL(wp), POINTER, DIMENSION(:) ::   zq_su       ! heat for surface ablation                   (J.m-2) 
    9292      REAL(wp), POINTER, DIMENSION(:) ::   zq_bo       ! heat for bottom ablation                    (J.m-2) 
    93       REAL(wp), POINTER, DIMENSION(:) ::   zq_1cat     ! corrected heat in case 1-cat and hmelt>15cm (J.m-2) 
    9493      REAL(wp), POINTER, DIMENSION(:) ::   zq_rema     ! remaining heat at the end of the routine    (J.m-2) 
    9594      REAL(wp), POINTER, DIMENSION(:) ::   zf_tt     ! Heat budget to determine melting or freezing(W.m-2) 
     
    107106      REAL(wp), POINTER, DIMENSION(:) ::   zq_s        ! total snow enthalpy     (J.m-3) 
    108107 
    109       ! mass and salt flux (clem) 
    110       REAL(wp) :: zdvres, zswitch_sal 
     108      REAL(wp) :: zswitch_sal 
    111109 
    112110      ! Heat conservation  
     
    121119      END SELECT 
    122120 
    123       CALL wrk_alloc( jpij, zh_s, zqprec, zq_su, zq_bo, zf_tt, zq_1cat, zq_rema ) 
     121      CALL wrk_alloc( jpij, zh_s, zqprec, zq_su, zq_bo, zf_tt, zq_rema ) 
    124122      CALL wrk_alloc( jpij, zdh_s_mel, zdh_s_pre, zdh_s_sub, zqh_i, zqh_s, zq_s ) 
    125123      CALL wrk_alloc( jpij, nlay_i+1, zdeltah, zh_i ) 
     
    130128  
    131129      zqprec (:) = 0._wp ; zq_su  (:) = 0._wp ; zq_bo  (:) = 0._wp ; zf_tt  (:) = 0._wp 
    132       zq_1cat(:) = 0._wp ; zq_rema(:) = 0._wp 
     130      zq_rema(:) = 0._wp 
    133131 
    134132      zh_s     (:) = 0._wp        
     
    579577      END DO ! jk 
    580578 
    581       !------------------------------------------------------------------------------! 
    582       ! Excessive ablation in a 1-category model 
    583       !     in a 1-category sea ice model, bottom ablation must not exceed hmelt (-0.15) 
    584       !------------------------------------------------------------------------------! 
    585       ! ??? keep ??? 
    586       ! clem bug: I think this should be included above, so we would not have to  
    587       !           track heat/salt/mass fluxes backwards 
    588 !      IF( jpl == 1 ) THEN 
    589 !         DO ji = kideb, kiut 
    590 !            IF(  zf_tt(ji)  >=  0._wp  ) THEN 
    591 !               zdh            = MAX( hmelt , dh_i_bott(ji) ) 
    592 !               zdvres         = zdh - dh_i_bott(ji) ! >=0 
    593 !               dh_i_bott(ji)  = zdh 
    594 ! 
    595 !               ! excessive energy is sent to lateral ablation 
    596 !               rswitch = MAX( 0._wp, SIGN( 1._wp , 1._wp - at_i_1d(ji) - epsi20 ) ) 
    597 !               zq_1cat(ji) =  rswitch * rhoic * lfus * at_i_1d(ji) / MAX( 1._wp - at_i_1d(ji) , epsi20 ) * zdvres ! J.m-2 >=0 
    598 ! 
    599 !               ! correct salt and mass fluxes 
    600 !               sfx_bom_1d(ji) = sfx_bom_1d(ji) - sm_i_1d(ji) * a_i_1d(ji) * zdvres * rhoic * r1_rdtice ! this is only a raw approximation 
    601 !               wfx_bom_1d(ji) = wfx_bom_1d(ji) - rhoic * a_i_1d(ji) * zdvres * r1_rdtice 
    602 !            ENDIF 
    603 !         END DO 
    604 !      ENDIF 
    605  
    606579      !------------------------------------------- 
    607580      ! Update temperature, energy 
     
    635608         ii = MOD( npb(ji) - 1, jpi ) + 1 ; ij = ( npb(ji) - 1 ) / jpi + 1 
    636609         ! Remaining heat flux (W.m-2) is sent to the ocean heat budget 
    637          hfx_out(ii,ij)  = hfx_out(ii,ij) + ( zq_1cat(ji) + zq_rema(ji) * a_i_1d(ji) ) * r1_rdtice 
     610         hfx_out(ii,ij)  = hfx_out(ii,ij) + ( zq_rema(ji) * a_i_1d(ji) ) * r1_rdtice 
    638611 
    639612         IF( ln_nicep .AND. zq_rema(ji) < 0. .AND. lwp ) WRITE(numout,*) 'ALERTE zq_rema <0 = ', zq_rema(ji) 
     
    716689      END DO 
    717690 
    718       CALL wrk_dealloc( jpij, zh_s, zqprec, zq_su, zq_bo, zf_tt, zq_1cat, zq_rema ) 
     691      CALL wrk_dealloc( jpij, zh_s, zqprec, zq_su, zq_bo, zf_tt, zq_rema ) 
    719692      CALL wrk_dealloc( jpij, zdh_s_mel, zdh_s_pre, zdh_s_sub, zqh_i, zqh_s, zq_s ) 
    720693      CALL wrk_dealloc( jpij, nlay_i+1, zdeltah, zh_i ) 
  • branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90

    r4990 r5047  
    112112      REAL(wp) ::   ztmelt_i    ! ice melting temperature 
    113113      REAL(wp) ::   zerritmax   ! current maximal error on temperature  
     114      REAL(wp) ::   zhsu 
    114115      REAL(wp), POINTER, DIMENSION(:) ::   ztfs        ! ice melting point 
    115116      REAL(wp), POINTER, DIMENSION(:) ::   ztsub       ! old surface temperature (before the iterative procedure ) 
     
    123124      REAL(wp), POINTER, DIMENSION(:) ::   zdifcase    ! case of the equation resolution (1->4) 
    124125      REAL(wp), POINTER, DIMENSION(:) ::   zftrice     ! solar radiation transmitted through the ice 
    125       REAL(wp), POINTER, DIMENSION(:) ::   zihic, zhsu 
     126      REAL(wp), POINTER, DIMENSION(:) ::   zihic 
    126127      REAL(wp), POINTER, DIMENSION(:,:) ::   ztcond_i    ! Ice thermal conductivity 
    127128      REAL(wp), POINTER, DIMENSION(:,:) ::   zradtr_i    ! Radiation transmitted through the ice 
     
    150151      CALL wrk_alloc( jpij, numeqmin, numeqmax, isnow ) 
    151152      CALL wrk_alloc( jpij, ztfs, ztsub, ztsubit, zh_i, zh_s, zfsw ) 
    152       CALL wrk_alloc( jpij, zf, dzf, zerrit, zdifcase, zftrice, zihic, zhsu ) 
     153      CALL wrk_alloc( jpij, zf, dzf, zerrit, zdifcase, zftrice, zihic ) 
    153154      CALL wrk_alloc( jpij, nlay_i+1, ztcond_i, zradtr_i, zradab_i, zkappa_i, ztib, zeta_i, ztitemp, z_i, zspeche_i, kjstart=0) 
    154155      CALL wrk_alloc( jpij, nlay_s+1,           zradtr_s, zradab_s, zkappa_s, ztsb, zeta_s, ztstemp, z_s, kjstart=0) 
     
    212213      ! zftrice = io.qsr_ice       is below the surface  
    213214      ! ftr_ice = io.qsr_ice.exp(-k(h_i)) transmitted below the ice  
    214  
     215      zhsu = 0.1_wp ! threshold for the computation of i0 
     216         !fr1_i0_1d = i0 for a thin ice surface 
     217         !fr1_i0_2d = i0 for a thick ice surface 
    215218      DO ji = kideb , kiut 
    216219         ! switches 
    217220         isnow(ji) = NINT(  1._wp - MAX( 0._wp , SIGN( 1._wp , - ht_s_1d(ji) ) )  )  
    218221         ! hs > 0, isnow = 1 
    219          zhsu (ji) = hnzst  ! threshold for the computation of i0 
    220          zihic(ji) = MAX( 0._wp , 1._wp - ( ht_i_1d(ji) / zhsu(ji) ) )      
     222         zihic(ji) = MAX( 0._wp , 1._wp - ( ht_i_1d(ji) / zhsu ) )      
    221223 
    222224         i0(ji)    = REAL( 1 - isnow(ji) ) * ( fr1_i0_1d(ji) + zihic(ji) * fr2_i0_1d(ji) ) 
    223          !fr1_i0_1d = i0 for a thin ice surface 
    224          !fr1_i0_2d = i0 for a thick ice surface 
    225          !            a function of the cloud cover 
    226          ! 
    227          !i0(ji)     =  (1.0-FLOAT(isnow(ji)))*3.0/(100*ht_s_1d(ji)+10.0) 
    228          !formula used in Cice 
    229225      END DO 
    230226 
     
    775771      CALL wrk_dealloc( jpij, numeqmin, numeqmax, isnow ) 
    776772      CALL wrk_dealloc( jpij, ztfs, ztsub, ztsubit, zh_i, zh_s, zfsw ) 
    777       CALL wrk_dealloc( jpij, zf, dzf, zerrit, zdifcase, zftrice, zihic, zhsu ) 
     773      CALL wrk_dealloc( jpij, zf, dzf, zerrit, zdifcase, zftrice, zihic ) 
    778774      CALL wrk_dealloc( jpij, nlay_i+1, ztcond_i, zradtr_i, zradab_i, zkappa_i,   & 
    779775         &              ztib, zeta_i, ztitemp, z_i, zspeche_i, kjstart = 0 ) 
  • branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limthd_lac.F90

    r4990 r5047  
    112112 
    113113      REAL(wp), POINTER, DIMENSION(:,:) ::   zvrel                   ! relative ice / frazil velocity 
     114 
     115      REAL(wp) :: zcai = 1.4e-3_wp 
    114116      !!-----------------------------------------------------------------------! 
    115117 
     
    166168         zhicrit = 0.04 ! frazil ice thickness 
    167169         ztwogp  = 2. * rau0 / ( grav * 0.3 * ( rau0 - rhoic ) ) ! reduced grav 
    168          zsqcd   = 1.0 / SQRT( 1.3 * cai ) ! 1/SQRT(airdensity*drag) 
     170         zsqcd   = 1.0 / SQRT( 1.3 * zcai ) ! 1/SQRT(airdensity*drag) 
    169171         zgamafr = 0.03 
    170172 
  • branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limthd_sal.F90

    r4872 r5047  
    135135      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    136136      NAMELIST/namicesal/ num_sal, bulk_sal, sal_G, time_G, sal_F, time_F,   & 
    137          &                s_i_max, s_i_min, s_i_0, s_i_1 
     137         &                s_i_max, s_i_min  
    138138      !!------------------------------------------------------------------- 
    139139      ! 
     
    159159         WRITE(numout,*) ' Maximum tolerated ice salinity     : ', s_i_max 
    160160         WRITE(numout,*) ' Minimum tolerated ice salinity     : ', s_i_min 
    161          WRITE(numout,*) ' 1st salinity for salinity profile  : ', s_i_0 
    162          WRITE(numout,*) ' 2nd salinity for salinity profile  : ', s_i_1 
    163161      ENDIF 
    164162      ! 
  • branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90

    r4990 r5047  
    281281      !! ** Purpose :   computes salinity profile in function of bulk salinity      
    282282      !! 
    283       !! ** Method  : If bulk salinity greater than s_i_1,  
     283      !! ** Method  : If bulk salinity greater than zsi1,  
    284284      !!              the profile is assumed to be constant (S_inf) 
    285       !!              If bulk salinity lower than s_i_0, 
     285      !!              If bulk salinity lower than zsi0, 
    286286      !!              the profile is linear with 0 at the surface (S_zero) 
    287       !!              If it is between s_i_0 and s_i_1, it is a 
     287      !!              If it is between zsi0 and zsi1, it is a 
    288288      !!              alpha-weighted linear combination of s_inf and s_zero 
    289289      !! 
     
    291291      !!------------------------------------------------------------------ 
    292292      INTEGER  ::   ji, jj, jk, jl   ! dummy loop index 
    293       REAL(wp) ::   dummy_fac0, dummy_fac1, dummy_fac, zsal      ! local scalar 
    294       REAL(wp) ::   zswi0, zswi01, zswibal, zargtemp , zs_zero   !   -      - 
    295       REAL(wp), POINTER, DIMENSION(:,:,:) ::   z_slope_s, zalpha   ! 3D pointer 
     293      REAL(wp) ::   dummy_fac0, dummy_fac1, dummy_fac, zsal 
     294      REAL(wp) ::   zswi0, zswi01, zswibal, zargtemp , zs_zero    
     295      REAL(wp), POINTER, DIMENSION(:,:,:) ::   z_slope_s, zalpha 
     296      REAL(wp), PARAMETER :: zsi0 = 3.5_wp 
     297      REAL(wp), PARAMETER :: zsi1 = 4.5_wp 
    296298      !!------------------------------------------------------------------ 
    297299 
     
    320322         END DO 
    321323         ! 
    322          dummy_fac0 = 1._wp / ( s_i_0 - s_i_1 )       ! Weighting factor between zs_zero and zs_inf 
    323          dummy_fac1 = s_i_1 / ( s_i_1 - s_i_0 ) 
     324         dummy_fac0 = 1._wp / ( zsi0 - zsi1 )       ! Weighting factor between zs_zero and zs_inf 
     325         dummy_fac1 = zsi1 / ( zsi1 - zsi0 ) 
    324326         ! 
    325327         zalpha(:,:,:) = 0._wp 
     
    327329            DO jj = 1, jpj 
    328330               DO ji = 1, jpi 
    329                   ! zswi0 = 1 if sm_i le s_i_0 and 0 otherwise 
    330                   zswi0  = MAX( 0._wp   , SIGN( 1._wp  , s_i_0 - sm_i(ji,jj,jl) ) )  
    331                   ! zswi01 = 1 if sm_i is between s_i_0 and s_i_1 and 0 othws  
    332                   zswi01 = ( 1._wp - zswi0 ) * MAX( 0._wp   , SIGN( 1._wp  , s_i_1 - sm_i(ji,jj,jl) ) )  
     331                  ! zswi0 = 1 if sm_i le zsi0 and 0 otherwise 
     332                  zswi0  = MAX( 0._wp   , SIGN( 1._wp  , zsi0 - sm_i(ji,jj,jl) ) )  
     333                  ! zswi01 = 1 if sm_i is between zsi0 and zsi1 and 0 othws  
     334                  zswi01 = ( 1._wp - zswi0 ) * MAX( 0._wp   , SIGN( 1._wp  , zsi1 - sm_i(ji,jj,jl) ) )  
    333335                  ! If 2.sm_i GE sss_m then zswibal = 1 
    334336                  ! this is to force a constant salinity profile in the Baltic Sea 
     
    453455      ! 
    454456      REAL(wp), POINTER, DIMENSION(:) ::   z_slope_s 
     457      REAL(wp), PARAMETER :: zsi0 = 3.5_wp 
     458      REAL(wp), PARAMETER :: zsi1 = 4.5_wp 
    455459      !!--------------------------------------------------------------------- 
    456460 
     
    474478         ! Weighting factor between zs_zero and zs_inf 
    475479         !--------------------------------------------- 
    476          dummy_fac0 = 1._wp / ( s_i_0 - s_i_1 ) 
    477          dummy_fac1 = s_i_1 / ( s_i_1 - s_i_0 ) 
     480         dummy_fac0 = 1._wp / ( zsi0 - zsi1 ) 
     481         dummy_fac1 = zsi1 / ( zsi1 - zsi0 ) 
    478482         dummy_fac2 = 1._wp / REAL(nlay_i,wp) 
    479483 
     
    484488               ii =  MOD( npb(ji) - 1 , jpi ) + 1 
    485489               ij =     ( npb(ji) - 1 ) / jpi + 1 
    486                ! zswi0 = 1 if sm_i le s_i_0 and 0 otherwise 
    487                zswi0  = MAX( 0._wp , SIGN( 1._wp  , s_i_0 - sm_i_1d(ji) ) )  
    488                ! zswi01 = 1 if sm_i is between s_i_0 and s_i_1 and 0 othws  
    489                zswi01 = ( 1._wp - zswi0 ) * MAX( 0._wp , SIGN( 1._wp , s_i_1 - sm_i_1d(ji) ) )  
     490               ! zswi0 = 1 if sm_i le zsi0 and 0 otherwise 
     491               zswi0  = MAX( 0._wp , SIGN( 1._wp  , zsi0 - sm_i_1d(ji) ) )  
     492               ! zswi01 = 1 if sm_i is between zsi0 and zsi1 and 0 othws  
     493               zswi01 = ( 1._wp - zswi0 ) * MAX( 0._wp , SIGN( 1._wp , zsi1 - sm_i_1d(ji) ) )  
    490494               ! if 2.sm_i GE sss_m then zswibal = 1 
    491495               ! this is to force a constant salinity profile in the Baltic Sea 
  • branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/thd_ice.F90

    r4990 r5047  
    1919   !!--------------------------- 
    2020   !                               !!! ** ice-thermo namelist (namicethd) ** 
    21    REAL(wp), PUBLIC ::   hmelt       !: maximum melting at the bottom; active only for one category 
    2221   REAL(wp), PUBLIC ::   hiclim      !: minimum ice thickness 
    23    REAL(wp), PUBLIC ::   hnzst       !: thick. of the surf. layer in temp. comp. 
    2422   REAL(wp), PUBLIC ::   parsub      !: switch for snow sublimation or not 
    2523   REAL(wp), PUBLIC ::   maxfrazb    !: maximum portion of frazil ice collecting at the ice bottom 
  • branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_clio.F90

    r5008 r5047  
    6262   LOGICAL ::   lbulk_init = .TRUE.               ! flag, bulk initialization done or not) 
    6363 
    64 #if ! defined key_lim3                           
    65    ! in namicerun with LIM3 
    6664   REAL(wp) ::   cai = 1.40e-3 ! best estimate of atm drag in order to get correct FS export in ORCA2-LIM 
    6765   REAL(wp) ::   cao = 1.00e-3 ! chosen by default  ==> should depends on many things...  !!gmto be updated 
    68 #endif 
    6966 
    7067   REAL(wp) ::   rdtbs2      !:    
Note: See TracChangeset for help on using the changeset viewer.