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 7421 for branches/2016/dev_merge_2016/NEMOGCM/NEMO/LIM_SRC_3/limthd_lac.F90 – NEMO

Ignore:
Timestamp:
2016-12-01T18:10:41+01:00 (8 years ago)
Author:
flavoni
Message:

#1811 merge dev_CNRS_MERATOR_2016 with dev_merge_2016 branch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_merge_2016/NEMOGCM/NEMO/LIM_SRC_3/limthd_lac.F90

    r6416 r7421  
    2121   USE sbc_ice        ! Surface boundary condition: ice fields 
    2222   USE thd_ice        ! LIM thermodynamics 
    23    USE dom_ice        ! LIM domain 
    2423   USE ice            ! LIM variables 
    2524   USE limtab         ! LIM 2D <==> 1D 
     
    7170      !!               update ht_s_1d, ht_i_1d and tbif_1d(:,:)       
    7271      !!------------------------------------------------------------------------ 
    73       INTEGER ::   ji,jj,jk,jl      ! dummy loop indices 
    74       INTEGER ::   nbpac            ! local integers  
    75       INTEGER ::   ii, ij, iter     !   -       - 
    76       REAL(wp)  ::   ztmelts, zdv, zfrazb, zweight, zde                         ! local scalars 
     72      INTEGER  ::   ji,jj,jk,jl      ! dummy loop indices 
     73      INTEGER  ::   nbpac            ! local integers  
     74      INTEGER  ::   ii, ij, iter     !   -       - 
     75      REAL(wp) ::   ztmelts, zdv, zfrazb, zweight, zde                          ! local scalars 
    7776      REAL(wp) ::   zgamafr, zvfrx, zvgx, ztaux, ztwogp, zf                     !   -      - 
    7877      REAL(wp) ::   ztenagm, zvfry, zvgy, ztauy, zvrel2, zfp, zsqcd , zhicrit   !   -      - 
     
    154153 
    155154      ! Default new ice thickness 
    156       WHERE( qlead(:,:) < 0._wp ) ; hicol = rn_hnewice 
    157       ELSEWHERE                   ; hicol = 0._wp 
     155      WHERE( qlead(:,:) < 0._wp ) ; hicol(:,:) = rn_hnewice 
     156      ELSEWHERE                   ; hicol(:,:) = 0._wp 
    158157      END WHERE 
    159158 
     
    170169         zgamafr = 0.03 
    171170 
    172          DO jj = 2, jpj 
    173             DO ji = 2, jpi 
    174                IF ( qlead(ji,jj) < 0._wp ) THEN 
     171         DO jj = 2, jpjm1 
     172            DO ji = 2, jpim1 
     173               IF ( qlead(ji,jj) < 0._wp .AND. tau_icebfr(ji,jj) == 0._wp ) THEN ! activated if cooling and no landfast 
    175174                  !------------- 
    176175                  ! Wind stress 
     
    195194                  !------------------- 
    196195                  ! C-grid ice velocity 
    197                   rswitch = MAX(  0._wp, SIGN( 1._wp , at_i(ji,jj) )  ) 
    198                   zvgx    = rswitch * ( u_ice(ji-1,jj  ) * umask(ji-1,jj  ,1)  + u_ice(ji,jj) * umask(ji,jj,1) ) * 0.5_wp 
    199                   zvgy    = rswitch * ( v_ice(ji  ,jj-1) * vmask(ji  ,jj-1,1)  + v_ice(ji,jj) * vmask(ji,jj,1) ) * 0.5_wp 
     196                  zvgx    = ( u_ice(ji-1,jj  ) * umask(ji-1,jj  ,1)  + u_ice(ji,jj) * umask(ji,jj,1) ) * 0.5_wp 
     197                  zvgy    = ( v_ice(ji  ,jj-1) * vmask(ji  ,jj-1,1)  + v_ice(ji,jj) * vmask(ji,jj,1) ) * 0.5_wp 
    200198 
    201199                  !----------------------------------- 
     
    203201                  !----------------------------------- 
    204202                  ! absolute relative velocity 
    205                   zvrel2 = MAX(  ( zvfrx - zvgx ) * ( zvfrx - zvgx )   & 
    206                      &         + ( zvfry - zvgy ) * ( zvfry - zvgy ) , 0.15 * 0.15 ) 
     203                  rswitch      = MAX( 0._wp, SIGN( 1._wp , at_i(ji,jj) - epsi10 ) ) 
     204                  zvrel2       = MAX(  ( zvfrx - zvgx ) * ( zvfrx - zvgx )   & 
     205                     &               + ( zvfry - zvgy ) * ( zvfry - zvgy ) , 0.15 * 0.15 ) * rswitch 
    207206                  zvrel(ji,jj) = SQRT( zvrel2 ) 
    208207 
     
    219218                     zfp = ( hicol(ji,jj) - zhicrit ) * ( 3.0 * hicol(ji,jj) + zhicrit ) - zhicrit * ztwogp * zvrel2 
    220219 
    221                      hicol(ji,jj) = hicol(ji,jj) - zf/zfp 
     220                     hicol(ji,jj) = hicol(ji,jj) - zf / MAX( zfp, epsi20 ) 
    222221                     iter = iter + 1 
    223222                  END DO 
     
    228227         END DO  
    229228         !  
    230          CALL lbc_lnk( zvrel(:,:), 'T', 1. ) 
    231          CALL lbc_lnk( hicol(:,:), 'T', 1. ) 
     229         CALL lbc_lnk( zvrel, 'T', 1. ) 
     230         CALL lbc_lnk( hicol, 'T', 1. ) 
    232231 
    233232      ENDIF ! End of computation of frazil ice collection thickness 
     
    240239      ! Select points for new ice formation 
    241240      !------------------------------------- 
    242       ! This occurs if open water energy budget is negative 
     241      ! This occurs if open water energy budget is negative (cooling) and there is no landfast ice 
    243242      nbpac = 0 
    244243      npac(:) = 0 
     
    246245      DO jj = 1, jpj 
    247246         DO ji = 1, jpi 
    248             IF ( qlead(ji,jj)  <  0._wp ) THEN 
     247            IF ( qlead(ji,jj)  <  0._wp .AND. tau_icebfr(ji,jj) == 0._wp ) THEN 
    249248               nbpac = nbpac + 1 
    250249               npac( nbpac ) = (jj - 1) * jpi + ji 
     
    255254      ! debug point to follow 
    256255      jiindex_1d = 0 
    257       IF( ln_icectl ) THEN 
     256      IF( ln_limctl ) THEN 
    258257         DO ji = mi0(iiceprt), mi1(iiceprt) 
    259258            DO jj = mj0(jiceprt), mj1(jiceprt) 
     
    265264      ENDIF 
    266265    
    267       IF( ln_icectl ) WRITE(numout,*) 'lim_thd_lac : nbpac = ', nbpac 
     266      IF( ln_limctl ) WRITE(numout,*) 'lim_thd_lac : nbpac = ', nbpac 
    268267 
    269268      !------------------------------ 
Note: See TracChangeset for help on using the changeset viewer.