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 913 for trunk/NEMO/LIM_SRC_3/limdyn.F90 – NEMO

Ignore:
Timestamp:
2008-04-29T14:40:00+02:00 (16 years ago)
Author:
ctlod
Message:

Manage wind stress at the sea-ice (LIM 3.0)/ocean interface in a proper way, see ticket: #128

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/LIM_SRC_3/limdyn.F90

    r904 r913  
    1818   USE ice 
    1919   USE par_ice 
     20   USE sbc_oce         ! Surface boundary condition: ocean fields 
    2021   USE sbc_ice         ! Surface boundary condition: ice fields 
    2122   USE ice_oce 
     
    6667      !!------------------------------------------------------------------------------------ 
    6768      !! * Local variables 
    68       INTEGER ::   ji, jj, jl, ja    ! dummy loop indices 
    69       INTEGER :: i_j1, i_jpj         ! Starting/ending j-indices for rheology 
    70  
    71       REAL(wp) ::   & 
    72          ztairx, ztairy,          &  ! tempory scalars 
    73          zsang , zmod,            & 
    74          ztglx , ztgly ,          & 
    75          zt11, zt12, zt21, zt22 , & 
    76          zustm,                   & 
    77          zsfrldmx2, zsfrldmy2,    & 
    78          zu_ice, zv_ice, ztair2 
    79  
    80       REAL(wp),DIMENSION(jpj) ::   & 
    81            zind,                     &  ! i-averaged indicator of sea-ice 
    82            zmsk                         ! i-averaged of tmask 
     69      INTEGER  ::   ji, jj, jl, ja    ! dummy loop indices 
     70      INTEGER  ::   i_j1, i_jpj       ! Starting/ending j-indices for rheology 
     71      REAL(wp) ::   zcoef             ! temporary scalar 
     72      REAL(wp), DIMENSION(jpj)     ::   zind           ! i-averaged indicator of sea-ice 
     73      REAL(wp), DIMENSION(jpj)     ::   zmsk           ! i-averaged of tmask 
     74      REAL(wp), DIMENSION(jpi,jpj) ::   zu_io, zv_io   ! ice-ocean velocity 
    8375      !!--------------------------------------------------------------------- 
    8476 
     
    159151 
    160152         ! computation of friction velocity 
     153         ! -------------------------------- 
     154         ! ice-ocean velocity at U & V-points (u_ice vi_ice at U- & V-points ; ssu_m, ssv_m at U- & V-points) 
     155         zu_io(:,:) = u_ice(:,:) - ssu_m(:,:) 
     156         zv_io(:,:) = v_ice(:,:) - ssv_m(:,:) 
     157         ! frictional velocity at T-point 
     158         DO jj = 2, jpjm1  
     159            DO ji = fs_2, fs_jpim1   ! vector opt. 
     160               ust2s(ji,jj) = 0.5 * cw                                                          & 
     161                  &         * (  zu_io(ji,jj) * zu_io(ji,jj) + zu_io(ji-1,jj) * zu_io(ji-1,jj)   & 
     162                  &            + zv_io(ji,jj) * zv_io(ji,jj) + zv_io(ji,jj-1) * zv_io(ji,jj-1)   ) * tms(ji,jj) 
     163            END DO 
     164         END DO 
     165         ! 
     166      ELSE      ! no ice dynamics : transmit directly the atmospheric stress to the ocean 
     167         ! 
     168         zcoef = SQRT( 0.5 ) / rau0 
    161169         DO jj = 2, jpjm1 
    162             DO ji = fs_2, fs_jpim1 
    163  
    164                zu_ice   = u_ice(ji,jj) - u_oce(ji,jj) 
    165                zt11  = rhoco * zu_ice * zu_ice 
    166  
    167                zu_ice   = u_ice(ji-1,jj) - u_oce(ji-1,jj) 
    168                zt12  = rhoco * zu_ice * zu_ice 
    169  
    170                zv_ice   = v_ice(ji,jj) - v_oce(ji,jj) 
    171                zt21  = rhoco * zv_ice * zv_ice 
    172  
    173                zv_ice   = v_ice(ji,jj-1) - v_oce(ji,jj-1) 
    174                zt22  = rhoco * zv_ice * zv_ice 
    175                ztair2 = ( ( utaui_ice(ji,jj) + utaui_ice(ji-1,jj) ) / 2. )**2 + & 
    176                         ( ( vtaui_ice(ji,jj) + vtaui_ice(ji,jj-1) ) / 2. )**2 
    177  
    178                ! should not be weighted 
    179                zustm =  ( at_i(ji,jj)       ) * 0.5 * ( zt11 + zt12 + zt21 + zt22 )        & 
    180                   &  +  ( 1.0 - at_i(ji,jj) ) * SQRT( ztair2 ) 
    181  
    182                ust2s(ji,jj) = ( zustm / rau0 ) * tms(ji,jj) 
    183  
     170            DO ji = fs_2, fs_jpim1   ! vector opt. 
     171               ust2s(ji,jj) = zcoef * tms(ji,jj) * SQRT(  utau(ji,jj) * utau(ji,jj) + utau(ji-1,jj) * utau(ji-1,jj)   & 
     172                  &                                     + vtau(ji,jj) * vtau(ji,jj) + vtau(ji,jj-1) * vtau(ji,jj-1) ) 
    184173            END DO 
    185174         END DO 
    186  
    187        ELSE      ! If no ice dynamics   
    188                      
    189                ! virer ca (key_lim_cp1) 
    190           DO jj = 2, jpjm1 
    191              DO ji = fs_2, fs_jpim1 
    192                 ztair2 = ( ( utaui_ice(ji,jj) + utaui_ice(ji-1,jj) ) / 2. )**2 + & 
    193                          ( ( vtaui_ice(ji,jj) + vtaui_ice(ji,jj-1) ) / 2. )**2 
    194                 zustm        = SQRT( ztair2  ) 
    195  
    196                 ust2s(ji,jj) = ( zustm / rau0 ) * tms(ji,jj) 
    197             END DO 
    198          END DO 
    199  
     175         ! 
    200176      ENDIF 
    201177 
Note: See TracChangeset for help on using the changeset viewer.