Changeset 9767
- Timestamp:
- 2018-06-08T12:11:32+02:00 (5 years ago)
- Location:
- NEMO/trunk/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/ICE/icethd_dh.F90
r9750 r9767 146 146 DO ji = 1, npti 147 147 zdum = qns_ice_1d(ji) + qsr_ice_1d(ji) - qsr_ice_tr_1d(ji) - fc_su(ji) 148 zdum= zdum * MAX( 0._wp , SIGN( 1._wp, t_su_1d(ji) - rt0 ) )149 zq_su(ji) = MAX( 0._wp, zdum* rdt_ice )148 qml_ice_1d(ji) = zdum * MAX( 0._wp , SIGN( 1._wp, t_su_1d(ji) - rt0 ) ) 149 zq_su(ji) = MAX( 0._wp, qml_ice_1d(ji) * rdt_ice ) 150 150 END DO 151 151 ! -
NEMO/trunk/src/OCE/SBC/sbc_ice.F90
r9656 r9767 33 33 LOGICAL , PUBLIC, PARAMETER :: lk_si3 = .TRUE. !: SI3 ice model 34 34 LOGICAL , PUBLIC, PARAMETER :: lk_cice = .FALSE. !: no CICE 35 CHARACTER(len=1), PUBLIC, PARAMETER :: cp_ice_msh = 'C' !: 'C'-grid ice-velocity36 35 # endif 37 36 # if defined key_cice 38 37 LOGICAL , PUBLIC, PARAMETER :: lk_si3 = .FALSE. !: no SI3 39 38 LOGICAL , PUBLIC, PARAMETER :: lk_cice = .TRUE. !: CICE ice model 40 CHARACTER(len=1), PUBLIC :: cp_ice_msh = 'F' !: 'F'-grid ice-velocity41 39 # endif 42 40 … … 170 168 LOGICAL , PUBLIC, PARAMETER :: lk_si3 = .FALSE. !: no SI3 ice model 171 169 LOGICAL , PUBLIC, PARAMETER :: lk_cice = .FALSE. !: no CICE ice model 172 CHARACTER(len=1), PUBLIC, PARAMETER :: cp_ice_msh = '-' !: no grid ice-velocity173 170 REAL(wp) , PUBLIC, PARAMETER :: cldf_ice = 0.81 !: cloud fraction over sea ice, summer CLIO value [-] 174 171 INTEGER , PUBLIC, PARAMETER :: jpl = 1 -
NEMO/trunk/src/OCE/SBC/sbcblk.F90
r9752 r9767 719 719 ! Wind module relative to the moving ice ( U10m - U_ice ) ! 720 720 ! ------------------------------------------------------------ ! 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) 733 727 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 ! 748 731 ! Make ice-atm. drag dependent on ice concentration 749 732 IF ( ln_Cd_L12 ) THEN ! calculate new drag from Lupkes(2012) equations … … 769 752 ! Wind stress relative to the moving ice ( U10m - U_ice ) ! 770 753 ! ------------------------------------------------------------ ! 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) ) 785 761 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 ! 800 765 ! 801 766 IF(ln_ctl) THEN -
NEMO/trunk/src/OCE/SBC/sbccpl.F90
r9598 r9767 1456 1456 !! ** Method : transform the received stress from the atmosphere into 1457 1457 !! 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: 1459 1459 !! 'C'-grid : i- (j-) components given at U- (V-) point 1460 !! 'I'-grid : B-grid lower-left corner: both components given at I-point1461 1460 !! 1462 1461 !! The received stress are : … … 1471 1470 !! first as 2 components on the sphere 1472 1471 !! second as 2 components oriented along the local grid 1473 !! third as 2 components on the cp_ice_mshpoint1472 !! third as 2 components on the ice grid point 1474 1473 !! 1475 1474 !! Except in 'oce and ice' case, only one vector stress field 1476 1475 !! is received. It has already been processed in sbc_cpl_rcv 1477 1476 !! 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. 1480 1478 !! 1481 !! ** Action : return ptau_i, ptau_j, the stress over the ice at cp_ice_msh point1479 !! ** Action : return ptau_i, ptau_j, the stress over the ice 1482 1480 !!---------------------------------------------------------------------- 1483 1481 REAL(wp), INTENT(out), DIMENSION(:,:) :: p_taui ! i- & j-components of atmos-ice stress [N/m2] … … 1538 1536 ! 1539 1537 ! 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 U1538 ! ice stress on ice velocity point ! | 1539 ! (C-grid ==>(U,V)) j | T U 1542 1540 ! | | 1543 1541 ! j j-1 -I-------| … … 1545 1543 ! i-1 i i 1546 1544 ! 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) ) 1557 1554 END DO 1558 CASE( 'F' )1559 DO jj = 2, jpjm1 ! F ==> I1560 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 DO1555 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) ) 1564 1561 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) ) 1573 1568 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 1645 1570 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 1647 1575 ENDIF 1648 1576 ! … … 2392 2320 END DO 2393 2321 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) 2404 2329 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) 2415 2339 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 2463 2341 END SELECT 2464 2342 CALL lbc_lnk_multi( zotx1, ssnd(jps_ocx1)%clgrid, -1., zoty1, ssnd(jps_ocy1)%clgrid, -1. ) … … 2525 2403 END DO 2526 2404 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 2561 2414 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 2597 2425 CALL lbc_lnk_multi( zotx1, ssnd(jps_ocxw)%clgrid, -1., zoty1, ssnd(jps_ocyw)%clgrid, -1. ) 2598 2426 !
Note: See TracChangeset
for help on using the changeset viewer.