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 9767 for NEMO/trunk/src/OCE – NEMO

Changeset 9767 for NEMO/trunk/src/OCE


Ignore:
Timestamp:
2018-06-08T12:11:32+02:00 (6 years ago)
Author:
clem
Message:

remove cp_ice_msh option in NEMO because the ice model is in C-grid and not anymore in B-grid (LIM2 type)

Location:
NEMO/trunk/src/OCE/SBC
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/SBC/sbc_ice.F90

    r9656 r9767  
    3333   LOGICAL         , PUBLIC, PARAMETER ::   lk_si3     = .TRUE.   !: SI3 ice model 
    3434   LOGICAL         , PUBLIC, PARAMETER ::   lk_cice    = .FALSE.  !: no CICE  
    35    CHARACTER(len=1), PUBLIC, PARAMETER ::   cp_ice_msh = 'C'      !: 'C'-grid ice-velocity 
    3635# endif 
    3736# if defined  key_cice 
    3837   LOGICAL         , PUBLIC, PARAMETER ::   lk_si3     = .FALSE.  !: no SI3 
    3938   LOGICAL         , PUBLIC, PARAMETER ::   lk_cice    = .TRUE.   !: CICE ice model 
    40    CHARACTER(len=1), PUBLIC            ::   cp_ice_msh = 'F'      !: 'F'-grid ice-velocity 
    4139# endif 
    4240 
     
    170168   LOGICAL         , PUBLIC, PARAMETER ::   lk_si3     = .FALSE.  !: no SI3 ice model 
    171169   LOGICAL         , PUBLIC, PARAMETER ::   lk_cice    = .FALSE.  !: no CICE ice model 
    172    CHARACTER(len=1), PUBLIC, PARAMETER ::   cp_ice_msh = '-'      !: no grid ice-velocity 
    173170   REAL(wp)        , PUBLIC, PARAMETER ::   cldf_ice = 0.81       !: cloud fraction over sea ice, summer CLIO value   [-] 
    174171   INTEGER         , PUBLIC, PARAMETER ::   jpl = 1  
  • NEMO/trunk/src/OCE/SBC/sbcblk.F90

    r9752 r9767  
    719719      !    Wind module relative to the moving ice ( U10m - U_ice )   ! 
    720720      ! ------------------------------------------------------------ ! 
    721       SELECT CASE( cp_ice_msh ) 
    722       CASE( 'I' )                  ! B-grid ice dynamics :   I-point (i.e. F-point with sea-ice indexation) 
    723          !                           and scalar wind at T-point ( = | U10m - U_ice | ) (masked) 
    724          DO jj = 2, jpjm1 
    725             DO ji = 2, jpim1   ! B grid : NO vector opt 
    726                ! ... scalar wind at T-point (fld being at T-point) 
    727                zwndi_t = sf(jp_wndi)%fnow(ji,jj,1) - rn_vfac * 0.25 * (  u_ice(ji,jj+1) + u_ice(ji+1,jj+1)   & 
    728                   &                                                    + u_ice(ji,jj  ) + u_ice(ji+1,jj  )  ) 
    729                zwndj_t = sf(jp_wndj)%fnow(ji,jj,1) - rn_vfac * 0.25 * (  v_ice(ji,jj+1) + v_ice(ji+1,jj+1)   & 
    730                   &                                                    + v_ice(ji,jj  ) + v_ice(ji+1,jj  )  ) 
    731                wndm_ice(ji,jj) = SQRT( zwndi_t * zwndi_t + zwndj_t * zwndj_t ) * tmask(ji,jj,1) 
    732             END DO 
     721      ! C-grid ice dynamics :   U & V-points (same as ocean) 
     722      DO jj = 2, jpjm1 
     723         DO ji = fs_2, fs_jpim1   ! vect. opt. 
     724            zwndi_t = (  sf(jp_wndi)%fnow(ji,jj,1) - rn_vfac * 0.5 * ( u_ice(ji-1,jj  ) + u_ice(ji,jj) )  ) 
     725            zwndj_t = (  sf(jp_wndj)%fnow(ji,jj,1) - rn_vfac * 0.5 * ( v_ice(ji  ,jj-1) + v_ice(ji,jj) )  ) 
     726            wndm_ice(ji,jj) = SQRT( zwndi_t * zwndi_t + zwndj_t * zwndj_t ) * tmask(ji,jj,1) 
    733727         END DO 
    734          CALL lbc_lnk( wndm_ice, 'T',  1. ) 
    735          ! 
    736       CASE( 'C' )                  ! C-grid ice dynamics :   U & V-points (same as ocean) 
    737          DO jj = 2, jpjm1 
    738             DO ji = fs_2, fs_jpim1   ! vect. opt. 
    739                zwndi_t = (  sf(jp_wndi)%fnow(ji,jj,1) - rn_vfac * 0.5 * ( u_ice(ji-1,jj  ) + u_ice(ji,jj) )  ) 
    740                zwndj_t = (  sf(jp_wndj)%fnow(ji,jj,1) - rn_vfac * 0.5 * ( v_ice(ji  ,jj-1) + v_ice(ji,jj) )  ) 
    741                wndm_ice(ji,jj) = SQRT( zwndi_t * zwndi_t + zwndj_t * zwndj_t ) * tmask(ji,jj,1) 
    742             END DO 
    743          END DO 
    744          CALL lbc_lnk( wndm_ice, 'T',  1. ) 
    745          ! 
    746       END SELECT 
    747  
     728      END DO 
     729      CALL lbc_lnk( wndm_ice, 'T',  1. ) 
     730      ! 
    748731      ! Make ice-atm. drag dependent on ice concentration 
    749732      IF    ( ln_Cd_L12 ) THEN   ! calculate new drag from Lupkes(2012) equations 
     
    769752      !    Wind stress relative to the moving ice ( U10m - U_ice )   ! 
    770753      ! ------------------------------------------------------------ ! 
    771       SELECT CASE( cp_ice_msh ) 
    772       CASE( 'I' )                  ! B-grid ice dynamics :   I-point (i.e. F-point with sea-ice indexation) 
    773          DO jj = 2, jpjm1 
    774             DO ji = 2, jpim1   ! B grid : NO vector opt 
    775                ! ... scalar wind at I-point (fld being at T-point) 
    776                zwndi_f = 0.25 * (  sf(jp_wndi)%fnow(ji-1,jj  ,1) + sf(jp_wndi)%fnow(ji  ,jj  ,1)   & 
    777                   &              + sf(jp_wndi)%fnow(ji-1,jj-1,1) + sf(jp_wndi)%fnow(ji  ,jj-1,1)  ) - rn_vfac * u_ice(ji,jj) 
    778                zwndj_f = 0.25 * (  sf(jp_wndj)%fnow(ji-1,jj  ,1) + sf(jp_wndj)%fnow(ji  ,jj  ,1)   & 
    779                   &              + sf(jp_wndj)%fnow(ji-1,jj-1,1) + sf(jp_wndj)%fnow(ji  ,jj-1,1)  ) - rn_vfac * v_ice(ji,jj) 
    780                ! ... ice stress at I-point 
    781                zwnorm_f = zrhoa(ji,jj) * Cd_atm(ji,jj) * SQRT( zwndi_f * zwndi_f + zwndj_f * zwndj_f ) 
    782                utau_ice(ji,jj) = zwnorm_f * zwndi_f 
    783                vtau_ice(ji,jj) = zwnorm_f * zwndj_f 
    784             END DO 
     754      ! C-grid ice dynamics :   U & V-points (same as ocean) 
     755      DO jj = 2, jpjm1 
     756         DO ji = fs_2, fs_jpim1   ! vect. opt. 
     757            utau_ice(ji,jj) = 0.5 * zrhoa(ji,jj) * Cd_atm(ji,jj) * ( wndm_ice(ji+1,jj  ) + wndm_ice(ji,jj) )            & 
     758               &          * ( 0.5 * (sf(jp_wndi)%fnow(ji+1,jj,1) + sf(jp_wndi)%fnow(ji,jj,1) ) - rn_vfac * u_ice(ji,jj) ) 
     759            vtau_ice(ji,jj) = 0.5 * zrhoa(ji,jj) * Cd_atm(ji,jj) * ( wndm_ice(ji,jj+1  ) + wndm_ice(ji,jj) )            & 
     760               &          * ( 0.5 * (sf(jp_wndj)%fnow(ji,jj+1,1) + sf(jp_wndj)%fnow(ji,jj,1) ) - rn_vfac * v_ice(ji,jj) ) 
    785761         END DO 
    786          CALL lbc_lnk_multi( utau_ice, 'I', -1., vtau_ice, 'I', -1. ) 
    787          ! 
    788       CASE( 'C' )                  ! C-grid ice dynamics :   U & V-points (same as ocean) 
    789          DO jj = 2, jpjm1 
    790             DO ji = fs_2, fs_jpim1   ! vect. opt. 
    791                utau_ice(ji,jj) = 0.5 * zrhoa(ji,jj) * Cd_atm(ji,jj) * ( wndm_ice(ji+1,jj  ) + wndm_ice(ji,jj) )            & 
    792                   &          * ( 0.5 * (sf(jp_wndi)%fnow(ji+1,jj,1) + sf(jp_wndi)%fnow(ji,jj,1) ) - rn_vfac * u_ice(ji,jj) ) 
    793                vtau_ice(ji,jj) = 0.5 * zrhoa(ji,jj) * Cd_atm(ji,jj) * ( wndm_ice(ji,jj+1  ) + wndm_ice(ji,jj) )            & 
    794                   &          * ( 0.5 * (sf(jp_wndj)%fnow(ji,jj+1,1) + sf(jp_wndj)%fnow(ji,jj,1) ) - rn_vfac * v_ice(ji,jj) ) 
    795             END DO 
    796          END DO 
    797          CALL lbc_lnk_multi( utau_ice, 'U', -1., vtau_ice, 'V', -1. ) 
    798          ! 
    799       END SELECT 
     762      END DO 
     763      CALL lbc_lnk_multi( utau_ice, 'U', -1., vtau_ice, 'V', -1. ) 
     764      ! 
    800765      ! 
    801766      IF(ln_ctl) THEN 
  • NEMO/trunk/src/OCE/SBC/sbccpl.F90

    r9598 r9767  
    14561456      !! ** Method  :   transform the received stress from the atmosphere into 
    14571457      !!             an atmosphere-ice stress in the (i,j) ocean referencial 
    1458       !!             and at the velocity point of the sea-ice model (cp_ice_msh): 
     1458      !!             and at the velocity point of the sea-ice model: 
    14591459      !!                'C'-grid : i- (j-) components given at U- (V-) point  
    1460       !!                'I'-grid : B-grid lower-left corner: both components given at I-point  
    14611460      !! 
    14621461      !!                The received stress are : 
     
    14711470      !!                 first  as  2 components on the sphere  
    14721471      !!                 second as  2 components oriented along the local grid 
    1473       !!                 third  as  2 components on the cp_ice_msh point  
     1472      !!                 third  as  2 components on the ice grid point  
    14741473      !! 
    14751474      !!                Except in 'oce and ice' case, only one vector stress field  
    14761475      !!             is received. It has already been processed in sbc_cpl_rcv 
    14771476      !!             so that it is now defined as (i,j) components given at U- 
    1478       !!             and V-points, respectively. Therefore, only the third 
    1479       !!             transformation is done and only if the ice-grid is a 'I'-grid.  
     1477      !!             and V-points, respectively.   
    14801478      !! 
    1481       !! ** Action  :   return ptau_i, ptau_j, the stress over the ice at cp_ice_msh point 
     1479      !! ** Action  :   return ptau_i, ptau_j, the stress over the ice 
    14821480      !!---------------------------------------------------------------------- 
    14831481      REAL(wp), INTENT(out), DIMENSION(:,:) ::   p_taui   ! i- & j-components of atmos-ice stress [N/m2] 
     
    15381536         !     
    15391537         !                                                  j+1   j     -----V---F 
    1540          ! ice stress on ice velocity point (cp_ice_msh)                 !       | 
    1541          ! (C-grid ==>(U,V) or B-grid ==> I or F)                 j      |   T   U 
     1538         ! ice stress on ice velocity point                              !       | 
     1539         ! (C-grid ==>(U,V))                                      j      |   T   U 
    15421540         !                                                               |       | 
    15431541         !                                                   j    j-1   -I-------| 
     
    15451543         !                                                              i-1  i   i 
    15461544         !                                                               i      i+1 (for I) 
    1547          SELECT CASE ( cp_ice_msh ) 
    1548             ! 
    1549          CASE( 'I' )                                         ! B-grid ==> I 
    1550             SELECT CASE ( srcv(jpr_itx1)%clgrid ) 
    1551             CASE( 'U' ) 
    1552                DO jj = 2, jpjm1                                   ! (U,V) ==> I 
    1553                   DO ji = 2, jpim1   ! NO vector opt. 
    1554                      p_taui(ji,jj) = 0.5 * ( frcv(jpr_itx1)%z3(ji-1,jj  ,1) + frcv(jpr_itx1)%z3(ji-1,jj-1,1) ) 
    1555                      p_tauj(ji,jj) = 0.5 * ( frcv(jpr_ity1)%z3(ji  ,jj-1,1) + frcv(jpr_ity1)%z3(ji-1,jj-1,1) ) 
    1556                   END DO 
     1545         SELECT CASE ( srcv(jpr_itx1)%clgrid ) 
     1546         CASE( 'U' ) 
     1547            p_taui(:,:) = frcv(jpr_itx1)%z3(:,:,1)                   ! (U,V) ==> (U,V) 
     1548            p_tauj(:,:) = frcv(jpr_ity1)%z3(:,:,1) 
     1549         CASE( 'F' ) 
     1550            DO jj = 2, jpjm1                                   ! F ==> (U,V) 
     1551               DO ji = fs_2, fs_jpim1   ! vector opt. 
     1552                  p_taui(ji,jj) = 0.5 * ( frcv(jpr_itx1)%z3(ji,jj,1) + frcv(jpr_itx1)%z3(ji  ,jj-1,1) ) 
     1553                  p_tauj(ji,jj) = 0.5 * ( frcv(jpr_ity1)%z3(ji,jj,1) + frcv(jpr_ity1)%z3(ji-1,jj  ,1) ) 
    15571554               END DO 
    1558             CASE( 'F' ) 
    1559                DO jj = 2, jpjm1                                   ! F ==> I 
    1560                   DO ji = 2, jpim1   ! NO vector opt. 
    1561                      p_taui(ji,jj) = frcv(jpr_itx1)%z3(ji-1,jj-1,1) 
    1562                      p_tauj(ji,jj) = frcv(jpr_ity1)%z3(ji-1,jj-1,1) 
    1563                   END DO 
     1555            END DO 
     1556         CASE( 'T' ) 
     1557            DO jj = 2, jpjm1                                   ! T ==> (U,V) 
     1558               DO ji = fs_2, fs_jpim1   ! vector opt. 
     1559                  p_taui(ji,jj) = 0.5 * ( frcv(jpr_itx1)%z3(ji+1,jj  ,1) + frcv(jpr_itx1)%z3(ji,jj,1) ) 
     1560                  p_tauj(ji,jj) = 0.5 * ( frcv(jpr_ity1)%z3(ji  ,jj+1,1) + frcv(jpr_ity1)%z3(ji,jj,1) ) 
    15641561               END DO 
    1565             CASE( 'T' ) 
    1566                DO jj = 2, jpjm1                                   ! T ==> I 
    1567                   DO ji = 2, jpim1   ! NO vector opt. 
    1568                      p_taui(ji,jj) = 0.25 * ( frcv(jpr_itx1)%z3(ji,jj  ,1) + frcv(jpr_itx1)%z3(ji-1,jj  ,1)   & 
    1569                         &                   + frcv(jpr_itx1)%z3(ji,jj-1,1) + frcv(jpr_itx1)%z3(ji-1,jj-1,1) )  
    1570                      p_tauj(ji,jj) = 0.25 * ( frcv(jpr_ity1)%z3(ji,jj  ,1) + frcv(jpr_ity1)%z3(ji-1,jj  ,1)   & 
    1571                         &                   + frcv(jpr_oty1)%z3(ji,jj-1,1) + frcv(jpr_ity1)%z3(ji-1,jj-1,1) ) 
    1572                   END DO 
     1562            END DO 
     1563         CASE( 'I' ) 
     1564            DO jj = 2, jpjm1                                   ! I ==> (U,V) 
     1565               DO ji = 2, jpim1   ! NO vector opt. 
     1566                  p_taui(ji,jj) = 0.5 * ( frcv(jpr_itx1)%z3(ji+1,jj+1,1) + frcv(jpr_itx1)%z3(ji+1,jj  ,1) ) 
     1567                  p_tauj(ji,jj) = 0.5 * ( frcv(jpr_ity1)%z3(ji+1,jj+1,1) + frcv(jpr_ity1)%z3(ji  ,jj+1,1) ) 
    15731568               END DO 
    1574             CASE( 'I' ) 
    1575                p_taui(:,:) = frcv(jpr_itx1)%z3(:,:,1)                   ! I ==> I 
    1576                p_tauj(:,:) = frcv(jpr_ity1)%z3(:,:,1) 
    1577             END SELECT 
    1578             IF( srcv(jpr_itx1)%clgrid /= 'I' ) THEN  
    1579                CALL lbc_lnk_multi( p_taui, 'I',  -1., p_tauj, 'I',  -1. ) 
    1580             ENDIF 
    1581             ! 
    1582          CASE( 'F' )                                         ! B-grid ==> F 
    1583             SELECT CASE ( srcv(jpr_itx1)%clgrid ) 
    1584             CASE( 'U' ) 
    1585                DO jj = 2, jpjm1                                   ! (U,V) ==> F 
    1586                   DO ji = fs_2, fs_jpim1   ! vector opt. 
    1587                      p_taui(ji,jj) = 0.5 * ( frcv(jpr_itx1)%z3(ji,jj,1) + frcv(jpr_itx1)%z3(ji  ,jj+1,1) ) 
    1588                      p_tauj(ji,jj) = 0.5 * ( frcv(jpr_ity1)%z3(ji,jj,1) + frcv(jpr_ity1)%z3(ji+1,jj  ,1) ) 
    1589                   END DO 
    1590                END DO 
    1591             CASE( 'I' ) 
    1592                DO jj = 2, jpjm1                                   ! I ==> F 
    1593                   DO ji = 2, jpim1   ! NO vector opt. 
    1594                      p_taui(ji,jj) = frcv(jpr_itx1)%z3(ji+1,jj+1,1) 
    1595                      p_tauj(ji,jj) = frcv(jpr_ity1)%z3(ji+1,jj+1,1) 
    1596                   END DO 
    1597                END DO 
    1598             CASE( 'T' ) 
    1599                DO jj = 2, jpjm1                                   ! T ==> F 
    1600                   DO ji = 2, jpim1   ! NO vector opt. 
    1601                      p_taui(ji,jj) = 0.25 * ( frcv(jpr_itx1)%z3(ji,jj  ,1) + frcv(jpr_itx1)%z3(ji+1,jj  ,1)   & 
    1602                         &                   + frcv(jpr_itx1)%z3(ji,jj+1,1) + frcv(jpr_itx1)%z3(ji+1,jj+1,1) )  
    1603                      p_tauj(ji,jj) = 0.25 * ( frcv(jpr_ity1)%z3(ji,jj  ,1) + frcv(jpr_ity1)%z3(ji+1,jj  ,1)   & 
    1604                         &                   + frcv(jpr_ity1)%z3(ji,jj+1,1) + frcv(jpr_ity1)%z3(ji+1,jj+1,1) ) 
    1605                   END DO 
    1606                END DO 
    1607             CASE( 'F' ) 
    1608                p_taui(:,:) = frcv(jpr_itx1)%z3(:,:,1)                   ! F ==> F 
    1609                p_tauj(:,:) = frcv(jpr_ity1)%z3(:,:,1) 
    1610             END SELECT 
    1611             IF( srcv(jpr_itx1)%clgrid /= 'F' ) THEN  
    1612                CALL lbc_lnk_multi( p_taui, 'F',  -1., p_tauj, 'F',  -1. ) 
    1613             ENDIF 
    1614             ! 
    1615          CASE( 'C' )                                         ! C-grid ==> U,V 
    1616             SELECT CASE ( srcv(jpr_itx1)%clgrid ) 
    1617             CASE( 'U' ) 
    1618                p_taui(:,:) = frcv(jpr_itx1)%z3(:,:,1)                   ! (U,V) ==> (U,V) 
    1619                p_tauj(:,:) = frcv(jpr_ity1)%z3(:,:,1) 
    1620             CASE( 'F' ) 
    1621                DO jj = 2, jpjm1                                   ! F ==> (U,V) 
    1622                   DO ji = fs_2, fs_jpim1   ! vector opt. 
    1623                      p_taui(ji,jj) = 0.5 * ( frcv(jpr_itx1)%z3(ji,jj,1) + frcv(jpr_itx1)%z3(ji  ,jj-1,1) ) 
    1624                      p_tauj(ji,jj) = 0.5 * ( frcv(jpr_ity1)%z3(ji,jj,1) + frcv(jpr_ity1)%z3(ji-1,jj  ,1) ) 
    1625                   END DO 
    1626                END DO 
    1627             CASE( 'T' ) 
    1628                DO jj = 2, jpjm1                                   ! T ==> (U,V) 
    1629                   DO ji = fs_2, fs_jpim1   ! vector opt. 
    1630                      p_taui(ji,jj) = 0.5 * ( frcv(jpr_itx1)%z3(ji+1,jj  ,1) + frcv(jpr_itx1)%z3(ji,jj,1) ) 
    1631                      p_tauj(ji,jj) = 0.5 * ( frcv(jpr_ity1)%z3(ji  ,jj+1,1) + frcv(jpr_ity1)%z3(ji,jj,1) ) 
    1632                   END DO 
    1633                END DO 
    1634             CASE( 'I' ) 
    1635                DO jj = 2, jpjm1                                   ! I ==> (U,V) 
    1636                   DO ji = 2, jpim1   ! NO vector opt. 
    1637                      p_taui(ji,jj) = 0.5 * ( frcv(jpr_itx1)%z3(ji+1,jj+1,1) + frcv(jpr_itx1)%z3(ji+1,jj  ,1) ) 
    1638                      p_tauj(ji,jj) = 0.5 * ( frcv(jpr_ity1)%z3(ji+1,jj+1,1) + frcv(jpr_ity1)%z3(ji  ,jj+1,1) ) 
    1639                   END DO 
    1640                END DO 
    1641             END SELECT 
    1642             IF( srcv(jpr_itx1)%clgrid /= 'U' ) THEN  
    1643                CALL lbc_lnk_multi( p_taui, 'U',  -1., p_tauj, 'V',  -1. ) 
    1644             ENDIF 
     1569            END DO 
    16451570         END SELECT 
    1646  
     1571         IF( srcv(jpr_itx1)%clgrid /= 'U' ) THEN  
     1572            CALL lbc_lnk_multi( p_taui, 'U',  -1., p_tauj, 'V',  -1. ) 
     1573         ENDIF 
     1574          
    16471575      ENDIF 
    16481576      ! 
     
    23922320                  END DO 
    23932321               END DO 
    2394             CASE( 'weighted oce and ice' )    
    2395                SELECT CASE ( cp_ice_msh ) 
    2396                CASE( 'C' )                      ! Ocean and Ice on C-grid ==> T 
    2397                   DO jj = 2, jpjm1 
    2398                      DO ji = fs_2, fs_jpim1   ! vector opt. 
    2399                         zotx1(ji,jj) = 0.5 * ( un   (ji,jj,1) + un   (ji-1,jj  ,1) ) * zfr_l(ji,jj)   
    2400                         zoty1(ji,jj) = 0.5 * ( vn   (ji,jj,1) + vn   (ji  ,jj-1,1) ) * zfr_l(ji,jj) 
    2401                         zitx1(ji,jj) = 0.5 * ( u_ice(ji,jj  ) + u_ice(ji-1,jj    ) ) *  fr_i(ji,jj) 
    2402                         zity1(ji,jj) = 0.5 * ( v_ice(ji,jj  ) + v_ice(ji  ,jj-1  ) ) *  fr_i(ji,jj) 
    2403                      END DO 
     2322            CASE( 'weighted oce and ice' )      ! Ocean and Ice on C-grid ==> T   
     2323               DO jj = 2, jpjm1 
     2324                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     2325                     zotx1(ji,jj) = 0.5 * ( un   (ji,jj,1) + un   (ji-1,jj  ,1) ) * zfr_l(ji,jj)   
     2326                     zoty1(ji,jj) = 0.5 * ( vn   (ji,jj,1) + vn   (ji  ,jj-1,1) ) * zfr_l(ji,jj) 
     2327                     zitx1(ji,jj) = 0.5 * ( u_ice(ji,jj  ) + u_ice(ji-1,jj    ) ) *  fr_i(ji,jj) 
     2328                     zity1(ji,jj) = 0.5 * ( v_ice(ji,jj  ) + v_ice(ji  ,jj-1  ) ) *  fr_i(ji,jj) 
    24042329                  END DO 
    2405                CASE( 'I' )                      ! Ocean on C grid, Ice on I-point (B-grid) ==> T 
    2406                   DO jj = 2, jpjm1 
    2407                      DO ji = 2, jpim1   ! NO vector opt. 
    2408                         zotx1(ji,jj) = 0.5  * ( un(ji,jj,1)      + un(ji-1,jj  ,1) ) * zfr_l(ji,jj)   
    2409                         zoty1(ji,jj) = 0.5  * ( vn(ji,jj,1)      + vn(ji  ,jj-1,1) ) * zfr_l(ji,jj)   
    2410                         zitx1(ji,jj) = 0.25 * ( u_ice(ji+1,jj+1) + u_ice(ji,jj+1)                     & 
    2411                            &                  + u_ice(ji+1,jj  ) + u_ice(ji,jj  )  ) *  fr_i(ji,jj) 
    2412                         zity1(ji,jj) = 0.25 * ( v_ice(ji+1,jj+1) + v_ice(ji,jj+1)                     & 
    2413                            &                  + v_ice(ji+1,jj  ) + v_ice(ji,jj  )  ) *  fr_i(ji,jj) 
    2414                      END DO 
     2330               END DO 
     2331               CALL lbc_lnk_multi( zitx1, 'T', -1., zity1, 'T', -1. ) 
     2332            CASE( 'mixed oce-ice'        )      ! Ocean and Ice on C-grid ==> T 
     2333               DO jj = 2, jpjm1 
     2334                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     2335                     zotx1(ji,jj) = 0.5 * ( un   (ji,jj,1) + un   (ji-1,jj  ,1) ) * zfr_l(ji,jj)   & 
     2336                        &         + 0.5 * ( u_ice(ji,jj  ) + u_ice(ji-1,jj    ) ) *  fr_i(ji,jj) 
     2337                     zoty1(ji,jj) = 0.5 * ( vn   (ji,jj,1) + vn   (ji  ,jj-1,1) ) * zfr_l(ji,jj)   & 
     2338                        &         + 0.5 * ( v_ice(ji,jj  ) + v_ice(ji  ,jj-1  ) ) *  fr_i(ji,jj) 
    24152339                  END DO 
    2416                CASE( 'F' )                      ! Ocean on C grid, Ice on F-point (B-grid) ==> T 
    2417                   DO jj = 2, jpjm1 
    2418                      DO ji = 2, jpim1   ! NO vector opt. 
    2419                         zotx1(ji,jj) = 0.5  * ( un(ji,jj,1)      + un(ji-1,jj  ,1) ) * zfr_l(ji,jj)   
    2420                         zoty1(ji,jj) = 0.5  * ( vn(ji,jj,1)      + vn(ji  ,jj-1,1) ) * zfr_l(ji,jj)   
    2421                         zitx1(ji,jj) = 0.25 * ( u_ice(ji-1,jj-1) + u_ice(ji,jj-1)                     & 
    2422                            &                  + u_ice(ji-1,jj  ) + u_ice(ji,jj  )  ) *  fr_i(ji,jj) 
    2423                         zity1(ji,jj) = 0.25 * ( v_ice(ji-1,jj-1) + v_ice(ji,jj-1)                     & 
    2424                            &                  + v_ice(ji-1,jj  ) + v_ice(ji,jj  )  ) *  fr_i(ji,jj) 
    2425                      END DO 
    2426                   END DO 
    2427                END SELECT 
    2428                CALL lbc_lnk_multi( zitx1, 'T', -1., zity1, 'T', -1. ) 
    2429             CASE( 'mixed oce-ice'        ) 
    2430                SELECT CASE ( cp_ice_msh ) 
    2431                CASE( 'C' )                      ! Ocean and Ice on C-grid ==> T 
    2432                   DO jj = 2, jpjm1 
    2433                      DO ji = fs_2, fs_jpim1   ! vector opt. 
    2434                         zotx1(ji,jj) = 0.5 * ( un   (ji,jj,1) + un   (ji-1,jj  ,1) ) * zfr_l(ji,jj)   & 
    2435                            &         + 0.5 * ( u_ice(ji,jj  ) + u_ice(ji-1,jj    ) ) *  fr_i(ji,jj) 
    2436                         zoty1(ji,jj) = 0.5 * ( vn   (ji,jj,1) + vn   (ji  ,jj-1,1) ) * zfr_l(ji,jj)   & 
    2437                            &         + 0.5 * ( v_ice(ji,jj  ) + v_ice(ji  ,jj-1  ) ) *  fr_i(ji,jj) 
    2438                      END DO 
    2439                   END DO 
    2440                CASE( 'I' )                      ! Ocean on C grid, Ice on I-point (B-grid) ==> T 
    2441                   DO jj = 2, jpjm1 
    2442                      DO ji = 2, jpim1   ! NO vector opt. 
    2443                         zotx1(ji,jj) = 0.5  * ( un(ji,jj,1)      + un(ji-1,jj  ,1) ) * zfr_l(ji,jj)   &    
    2444                            &         + 0.25 * ( u_ice(ji+1,jj+1) + u_ice(ji,jj+1)                     & 
    2445                            &                  + u_ice(ji+1,jj  ) + u_ice(ji,jj  )  ) *  fr_i(ji,jj) 
    2446                         zoty1(ji,jj) = 0.5  * ( vn(ji,jj,1)      + vn(ji  ,jj-1,1) ) * zfr_l(ji,jj)   &  
    2447                            &         + 0.25 * ( v_ice(ji+1,jj+1) + v_ice(ji,jj+1)                     & 
    2448                            &                  + v_ice(ji+1,jj  ) + v_ice(ji,jj  )  ) *  fr_i(ji,jj) 
    2449                      END DO 
    2450                   END DO 
    2451                CASE( 'F' )                      ! Ocean on C grid, Ice on F-point (B-grid) ==> T 
    2452                   DO jj = 2, jpjm1 
    2453                      DO ji = 2, jpim1   ! NO vector opt. 
    2454                         zotx1(ji,jj) = 0.5  * ( un(ji,jj,1)      + un(ji-1,jj  ,1) ) * zfr_l(ji,jj)   &    
    2455                            &         + 0.25 * ( u_ice(ji-1,jj-1) + u_ice(ji,jj-1)                     & 
    2456                            &                  + u_ice(ji-1,jj  ) + u_ice(ji,jj  )  ) *  fr_i(ji,jj) 
    2457                         zoty1(ji,jj) = 0.5  * ( vn(ji,jj,1)      + vn(ji  ,jj-1,1) ) * zfr_l(ji,jj)   &  
    2458                            &         + 0.25 * ( v_ice(ji-1,jj-1) + v_ice(ji,jj-1)                     & 
    2459                            &                  + v_ice(ji-1,jj  ) + v_ice(ji,jj  )  ) *  fr_i(ji,jj) 
    2460                      END DO 
    2461                   END DO 
    2462                END SELECT 
     2340               END DO 
    24632341            END SELECT 
    24642342            CALL lbc_lnk_multi( zotx1, ssnd(jps_ocx1)%clgrid, -1.,  zoty1, ssnd(jps_ocy1)%clgrid, -1. ) 
     
    25252403                END DO  
    25262404             END DO  
    2527           CASE( 'weighted oce and ice' )     
    2528              SELECT CASE ( cp_ice_msh )  
    2529              CASE( 'C' )                      ! Ocean and Ice on C-grid ==> T  
    2530                 DO jj = 2, jpjm1  
    2531                    DO ji = fs_2, fs_jpim1   ! vector opt.  
    2532                       zotx1(ji,jj) = 0.5 * ( un   (ji,jj,1) + un   (ji-1,jj  ,1) ) * zfr_l(ji,jj)    
    2533                       zoty1(ji,jj) = 0.5 * ( vn   (ji,jj,1) + vn   (ji  ,jj-1,1) ) * zfr_l(ji,jj)  
    2534                       zitx1(ji,jj) = 0.5 * ( u_ice(ji,jj  ) + u_ice(ji-1,jj    ) ) *  fr_i(ji,jj)  
    2535                       zity1(ji,jj) = 0.5 * ( v_ice(ji,jj  ) + v_ice(ji  ,jj-1  ) ) *  fr_i(ji,jj)  
    2536                    END DO  
    2537                 END DO  
    2538              CASE( 'I' )                      ! Ocean on C grid, Ice on I-point (B-grid) ==> T  
    2539                 DO jj = 2, jpjm1  
    2540                    DO ji = 2, jpim1   ! NO vector opt.  
    2541                       zotx1(ji,jj) = 0.5  * ( un(ji,jj,1)      + un(ji-1,jj  ,1) ) * zfr_l(ji,jj)    
    2542                       zoty1(ji,jj) = 0.5  * ( vn(ji,jj,1)      + vn(ji  ,jj-1,1) ) * zfr_l(ji,jj)    
    2543                       zitx1(ji,jj) = 0.25 * ( u_ice(ji+1,jj+1) + u_ice(ji,jj+1)                     &  
    2544                          &                  + u_ice(ji+1,jj  ) + u_ice(ji,jj  )  ) *  fr_i(ji,jj)  
    2545                       zity1(ji,jj) = 0.25 * ( v_ice(ji+1,jj+1) + v_ice(ji,jj+1)                     &  
    2546                          &                  + v_ice(ji+1,jj  ) + v_ice(ji,jj  )  ) *  fr_i(ji,jj)  
    2547                    END DO  
    2548                 END DO  
    2549              CASE( 'F' )                      ! Ocean on C grid, Ice on F-point (B-grid) ==> T  
    2550                 DO jj = 2, jpjm1  
    2551                    DO ji = 2, jpim1   ! NO vector opt.  
    2552                       zotx1(ji,jj) = 0.5  * ( un(ji,jj,1)      + un(ji-1,jj  ,1) ) * zfr_l(ji,jj)    
    2553                       zoty1(ji,jj) = 0.5  * ( vn(ji,jj,1)      + vn(ji  ,jj-1,1) ) * zfr_l(ji,jj)    
    2554                       zitx1(ji,jj) = 0.25 * ( u_ice(ji-1,jj-1) + u_ice(ji,jj-1)                     &  
    2555                          &                  + u_ice(ji-1,jj  ) + u_ice(ji,jj  )  ) *  fr_i(ji,jj)  
    2556                       zity1(ji,jj) = 0.25 * ( v_ice(ji-1,jj-1) + v_ice(ji,jj-1)                     &  
    2557                          &                  + v_ice(ji-1,jj  ) + v_ice(ji,jj  )  ) *  fr_i(ji,jj)  
    2558                    END DO  
    2559                 END DO  
    2560              END SELECT  
     2405          CASE( 'weighted oce and ice' )      ! Ocean and Ice on C-grid ==> T    
     2406             DO jj = 2, jpjm1  
     2407                DO ji = fs_2, fs_jpim1   ! vector opt.  
     2408                   zotx1(ji,jj) = 0.5 * ( un   (ji,jj,1) + un   (ji-1,jj  ,1) ) * zfr_l(ji,jj)    
     2409                   zoty1(ji,jj) = 0.5 * ( vn   (ji,jj,1) + vn   (ji  ,jj-1,1) ) * zfr_l(ji,jj)  
     2410                   zitx1(ji,jj) = 0.5 * ( u_ice(ji,jj  ) + u_ice(ji-1,jj    ) ) *  fr_i(ji,jj)  
     2411                   zity1(ji,jj) = 0.5 * ( v_ice(ji,jj  ) + v_ice(ji  ,jj-1  ) ) *  fr_i(ji,jj)  
     2412                END DO 
     2413             END DO 
    25612414             CALL lbc_lnk_multi( zitx1, 'T', -1.,  zity1, 'T', -1. )  
    2562           CASE( 'mixed oce-ice'        )  
    2563              SELECT CASE ( cp_ice_msh )  
    2564              CASE( 'C' )                      ! Ocean and Ice on C-grid ==> T  
    2565                 DO jj = 2, jpjm1  
    2566                    DO ji = fs_2, fs_jpim1   ! vector opt.  
    2567                       zotx1(ji,jj) = 0.5 * ( un   (ji,jj,1) + un   (ji-1,jj  ,1) ) * zfr_l(ji,jj)   &  
    2568                          &         + 0.5 * ( u_ice(ji,jj  ) + u_ice(ji-1,jj    ) ) *  fr_i(ji,jj)  
    2569                       zoty1(ji,jj) = 0.5 * ( vn   (ji,jj,1) + vn   (ji  ,jj-1,1) ) * zfr_l(ji,jj)   &  
    2570                          &         + 0.5 * ( v_ice(ji,jj  ) + v_ice(ji  ,jj-1  ) ) *  fr_i(ji,jj)  
    2571                    END DO  
    2572                 END DO  
    2573              CASE( 'I' )                      ! Ocean on C grid, Ice on I-point (B-grid) ==> T  
    2574                 DO jj = 2, jpjm1  
    2575                    DO ji = 2, jpim1   ! NO vector opt.  
    2576                       zotx1(ji,jj) = 0.5  * ( un(ji,jj,1)      + un(ji-1,jj  ,1) ) * zfr_l(ji,jj)   &     
    2577                          &         + 0.25 * ( u_ice(ji+1,jj+1) + u_ice(ji,jj+1)                     &  
    2578                          &                  + u_ice(ji+1,jj  ) + u_ice(ji,jj  )  ) *  fr_i(ji,jj)  
    2579                       zoty1(ji,jj) = 0.5  * ( vn(ji,jj,1)      + vn(ji  ,jj-1,1) ) * zfr_l(ji,jj)   &   
    2580                          &         + 0.25 * ( v_ice(ji+1,jj+1) + v_ice(ji,jj+1)                     &  
    2581                          &                  + v_ice(ji+1,jj  ) + v_ice(ji,jj  )  ) *  fr_i(ji,jj)  
    2582                    END DO  
    2583                 END DO  
    2584              CASE( 'F' )                      ! Ocean on C grid, Ice on F-point (B-grid) ==> T  
    2585                 DO jj = 2, jpjm1  
    2586                    DO ji = 2, jpim1   ! NO vector opt.  
    2587                       zotx1(ji,jj) = 0.5  * ( un(ji,jj,1)      + un(ji-1,jj  ,1) ) * zfr_l(ji,jj)   &     
    2588                          &         + 0.25 * ( u_ice(ji-1,jj-1) + u_ice(ji,jj-1)                     &  
    2589                          &                  + u_ice(ji-1,jj  ) + u_ice(ji,jj  )  ) *  fr_i(ji,jj)  
    2590                       zoty1(ji,jj) = 0.5  * ( vn(ji,jj,1)      + vn(ji  ,jj-1,1) ) * zfr_l(ji,jj)   &   
    2591                          &         + 0.25 * ( v_ice(ji-1,jj-1) + v_ice(ji,jj-1)                     &  
    2592                          &                  + v_ice(ji-1,jj  ) + v_ice(ji,jj  )  ) *  fr_i(ji,jj)  
    2593                    END DO  
    2594                 END DO  
    2595              END SELECT  
    2596           END SELECT  
     2415          CASE( 'mixed oce-ice'        )      ! Ocean and Ice on C-grid ==> T   
     2416             DO jj = 2, jpjm1  
     2417                DO ji = fs_2, fs_jpim1   ! vector opt.  
     2418                   zotx1(ji,jj) = 0.5 * ( un   (ji,jj,1) + un   (ji-1,jj  ,1) ) * zfr_l(ji,jj)   &  
     2419                      &         + 0.5 * ( u_ice(ji,jj  ) + u_ice(ji-1,jj    ) ) *  fr_i(ji,jj)  
     2420                   zoty1(ji,jj) = 0.5 * ( vn   (ji,jj,1) + vn   (ji  ,jj-1,1) ) * zfr_l(ji,jj)   &  
     2421                      &         + 0.5 * ( v_ice(ji,jj  ) + v_ice(ji  ,jj-1  ) ) *  fr_i(ji,jj)  
     2422                END DO 
     2423             END DO 
     2424          END SELECT 
    25972425         CALL lbc_lnk_multi( zotx1, ssnd(jps_ocxw)%clgrid, -1., zoty1, ssnd(jps_ocyw)%clgrid, -1. )  
    25982426         !  
Note: See TracChangeset for help on using the changeset viewer.